【发布时间】:2016-01-31 22:45:23
【问题描述】:
我想从父 POM 运行 Ant build.xml 构建。
这可能看起来像这样:
<project>
<groupId>my.group</groupId>
<artifactId>my-parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>pom</packaging>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<phase>initialize</phase>
<configuration>
<tasks>
<ant antfile="build.xml"/>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
除非我将此模块用作父 POM,否则它工作得很好。
问题出在<ant antfile="build.xml"/> 这一行。虽然此 POM 作为父 POM 运行,但插件没有可用的 build.xml 文件。
如何在所有子构建期间从文件(位于父 POM 中)运行 Ant 脚本?
PS
我尝试将build.xml 打包在某个分类器下,以使其可用于子构建。但我不知道,如何在antrun:run 之前提取我打包的build.xml。
PPS
项目结构:
<root>
+ Parent POM
| +- pom.xml
| +- build.xml
|
+ Component1
| + Child1
| | +- src/main/java
| | +- ...
| | +- pom.xml
| |
| + Child2
| +- src/main/java
| +-...
| +- pom.xml
|
+ Component2
+ Child3
| +- src/main/java
| +- ...
| +- pom.xml
|
+ Child4
+- src/main/java
+-...
+- pom.xml
作为奖励:我也想知道以下情况的答案:父 POM 是独立构建和部署的(不知道自己的子节点),而子节点只能访问父节点部署的工件(而不是源代码)代码)。
【问题讨论】:
-
好的。那么你是从根项目运行 Maven 吗?如果有的话,你能发布整个堆栈跟踪吗?
-
我正在从两个目录运行我的构建:根目录和子目录。我得到的例外是
java.io.FileNotFoundException: <root>\Component1\Child2\build.xml -
这两者是什么意思?通常,您应该只从
<root>运行mvn clean install。 -
我的项目很大,所以开发人员只有在更改分支或结帐后才从根目录运行
mvn clean install。大约需要 15 分钟。大多数情况下,构建是从 ChildX 目录触发的。 -
mvn clean install用于多模块构建通常是错误的方式...如果您想加快构建使用的第二个:mvn -pl TheModuleYouWouldLikeToBuild -amd clean package...除此之外,您是否尝试过使用@ 987654335@?此外,为什么需要 Ant 部件?这样做的目的是什么?