从 Maven 运行 Ant 任务
Posted
技术标签:
【中文标题】从 Maven 运行 Ant 任务【英文标题】:Run Ant task from Maven 【发布时间】:2011-03-31 01:26:48 【问题描述】:我正在使用 Ant 构建一个自定义 jar 库,然后我在 Maven 中将其用作依赖项。
所以,基本上我现在要做的是:
1) 运行ant构建自定义库(test-lib-1.0.0.jar) 2)运行:mvn compile,使用自定义库等编译我的项目。
我是否可以选择从 马文? 我找到了 maven run 插件,这是我的设置:
maven-antrun-plugin1.4但是,在运行时:mvn compile
它抱怨缺少工件:test-lib-1.0.0.jar
。
我在<phase/>
标记中使用了编译、生成资源、...,但似乎没有任何效果。
是否有可能使用这个插件以某种方式解决这个问题?
【问题讨论】:
【参考方案1】:当使用 Maven Antrun 插件时,Maven 会尝试解决依赖关系来为 AntRun 调用构建 ClassPaths,因此您将面临一个先有鸡还是先有蛋的问题:您不能声明将在 AntRun 执行期间创建的依赖项需要此依赖项才能运行。这行不通。
我的建议是将您的 test-lib
进行 mavenize,将其包含在您的项目构建中并声明对它的常规依赖。换句话说,我的意思是从 Ant 迁移到 Maven 以构建您的 test-lib
并设置 a multi-modules project。
为了更“直观”地说明事物,如下所示:
my-project
|-- my-module
| |-- src
| | `-- main
| | `-- java
| `-- pom.xml
|-- test-lib
| |-- src
| | `-- main
| | `-- java
| `-- pom.xml
`-- pom.xml
其中my-project/pom.xml
是带有<packaging>pom</packaging>
的聚合pom,并在<modules>
元素下列出模块:
<modules>
<module>my-module</module>
<module>test-lib</module>
</modules>
其中my-module/pom.xml
声明了对test-lib
工件的依赖:
<dependency>
<groupId>your.group.id</groupId>
<artifactId>test-lib</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
我只是在这里提供一个非常高级的概述,您需要阅读文档以了解详细信息,我无法涵盖所有内容。从 Sonatype 的第一本书开始(链接如下)。
但这将是正确的方法(你不应该(ab)使用system
范围依赖项)。
参考文献
Maven: The Definitive Guide【讨论】:
感谢您的回答帕斯卡!好的,所以基本上我需要以不同的方式做事。但是'mavenize your test-lib'是什么意思?你的意思是我应该在我的本地 maven 存储库上安装 test-lib 吗?我试图避免这种情况,因为 test-lib 是一个非常小的库,它实现了我项目中使用的 API,我当然希望在其他项目中使用它。 @Igor 不,我的意思不仅仅是在本地存储库中安装 test-lib,我的意思是创建一个特定的 maven 模块并将 test-lib 源放入其中(即从 ant 移动到maven 来构建它),以便您可以在需要时将其打包作为构建的一部分(恕我直言,它是一个小库,相反)。 @Pasacal 如何在我的项目构建中包含 test-lib,然后声明对其的标准依赖?如果您能指出一些文档和示例,我将不胜感激,因为我对 maven 还是很陌生。谢谢! @Igor:阅读免费在线书籍:sonatype.com/products/maven/documentation/book-defguide @Igor @seanizer 提供的链接(谢谢)绝对是一个入门的好地方。更准确地说是从第一本书开始(不要被“书”这个词吓到)。以上是关于从 Maven 运行 Ant 任务的主要内容,如果未能解决你的问题,请参考以下文章