我最终做的是为代码生成器创建另一个POM,并使用
maven-invoker-plugin
在主POM构建期间运行它。
看起来是这样的:
-
generate-resources
:
maven调用程序插件
generator-pom.xml
-
调用
:
-
generate-sources
:
maven-antrun-plugin
为生成器创建一些资源
-
compile
:
maven-compiler-plugin
src/generator/java
-
编译
target/generated-sources
-
生成源
build-helper-maven-plugin
添加源
目标/生成源
-
编译
:
maven编译器插件
同时编译
src/main/java
目标/生成源
-
test
-
package
...
-
deploy
...
当马文跑的时候
部署
,它只发布主POM文件和
maven-source-plugin
这个
构建助手maven插件
的
add-source
主POM文件如下所示:
...
<plugins>
<plugin>
<artifactId>maven-invoker-plugin</artifactId>
<configuration>
<pom>generator-pom.xml</pom>
<showErrors>true</showErrors>
<streamLogs>true</streamLogs>
</configuration>
<executions>
<execution>
<id>generate-sources</id>
<phase>generate-resources</phase>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>${project.build.directory}/generated-sources/mystuff</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven.compiler.plugin.version}</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version> <!-- needed to run JUnit 5 tests -->
</plugin>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
(生成器POM指的是我公司很多封闭源代码的东西,所以不要偷看,抱歉)。