Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Maven 2 从Maven运行Ant任务_Maven 2_Ant - Fatal编程技术网

Maven 2 从Maven运行Ant任务

Maven 2 从Maven运行Ant任务,maven-2,ant,Maven 2,Ant,我正在使用Ant构建一个自定义jar库,然后在Maven中将其用作依赖项 <dependency> <groupId>test-lib</groupId> <artifactId>test-lib</artifactId> <version>1.0.0system</scope> <systemPath>${basedir}/src/main/webapp/WEB-INF/lib/

我正在使用Ant构建一个自定义jar库,然后在Maven中将其用作依赖项

<dependency> <groupId>test-lib</groupId> <artifactId>test-lib</artifactId> <version>1.0.0system</scope> <systemPath>${basedir}/src/main/webapp/WEB-INF/lib/test-lib-1.0.0.jar</systemPath> </dependency> 测试库 测试库 1.0.0系统 ${basedir}/src/main/webapp/WEB-INF/lib/test-lib-1.0.0.jar 所以,基本上我现在做的是:

1) 运行ant构建自定义库(test-lib-1.0.0.jar)
2) run:mvncile,使用自定义库编译我的项目

有没有一个选项可以让我从中完成这一切(打包定制jar和编译项目) 专家 我找到了maven run插件,以下是我的设置:

<plugin> <artifactId>maven-antrun-plugin</artifactId> <version>1.4 <executions> <execution> <phase>?????what to put here?????/phase> <configuration> <tasks> <ant antfile="${basedir}/build.xml"> <target name="prepare-test-lib" /> </ant> </tasks> </configuration> <goals> <goal>run</goal> </goals> </execution> </executions> </plugin> maven antrun插件 1.4 ???????在这里放什么?????/阶段> 跑 但是,当运行:
mvncile
时,它会抱怨缺少工件:
test-lib-1.0.0.jar
。 我使用编译、生成资源,。。。在
标记中,但似乎什么都不起作用


使用这个插件可以解决这个问题吗?

当使用Maven Antrun插件时,Maven试图解决为Antrun调用构建的依赖项,因此您面临一个鸡和蛋的问题:您不能声明将在Antrun执行期间创建的依赖项,该依赖项需要运行。这不行

我的建议是对
测试库进行mavenize,将其包括在项目构建中,并声明对它的常规依赖关系。换句话说,我的意思是从Ant移动到Maven来构建
测试库并进行设置。
为了更“直观”地说明问题,可以这样做:

my-project
|-- my-module
|   |-- src
|   |   `-- main
|   |       `-- java
|   `-- pom.xml
|-- test-lib
|   |-- src
|   |   `-- main
|   |       `-- java
|   `-- pom.xml
`-- pom.xml
其中,
my project/pom.xml
是一个聚合pom,带有
pom
,并在
元素下列出模块:

<modules>
  <module>my-module</module>
  <module>test-lib</module>
</modules>
我只是在这里提供一个非常高层次的概述,您需要阅读一些文档以了解详细信息,我不能涵盖所有内容。从Sonatype的第一本书开始(下面的链接)

但这将是正确的方法(并且您不应该(ab)使用
system
scoped dependencies)

工具书类

谢谢你的回答,帕斯卡!好的,所以基本上我需要做不同的事情。但是“mavenizeyourtestlib”是什么意思呢?您的意思是我应该在本地maven存储库上安装测试库吗?我试图避免这种情况,因为测试库是一个非常小的库,实现了我项目中使用的API,我当然想在其他项目中使用它。@Igor不,我的意思不是只在本地存储库中安装测试库,而是创建一个特定的maven模块并将测试库源放在其中(即从ant移动到maven来构建它)因此,如果需要,您可以将其打包作为构建的一部分(相反,它是一个小库,这不是一个问题)。@Pasacal我如何在项目构建中包含测试库,然后声明对它的标准依赖关系?如果您能为我提供一些文档和示例,我将不胜感激,因为我对maven还很陌生。塔克斯@Igor:阅读免费在线书籍:@Igor@seanizer(谢谢)提供的链接绝对是一个开始的好地方。更准确地说,从第一本书开始(不要被“书”这个词吓到)。
<dependency>
  <groupId>your.group.id</groupId>
  <artifactId>test-lib</artifactId>
  <version>1.0-SNAPSHOT</version>
</dependency>