在我的Maven 1 Java项目中,我使用一些外部数据来创建编译类,因此我必须将编译分为两个步骤:编译程序,分析数据和创建类,编译这些类。
我如何在pom.xml
文件中描述这种情况?
答案 0 :(得分:1)
Maven 1是一项硬性要求吗?在Maven 3中,您可以将以下配置应用于POM:
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.1</version>
<executions>
<execution>
<id>retrieve-config</id>
<phase>process-classes</phase>
<goals>
<goal>exec</goal>
</goals>
</execution>
</executions>
<configuration>
<!-- replace by your generation step -->
<executable>echo</executable>
<arguments>
<argument>public</argument>
<argument>class</argument>
<argument>Main{}</argument>
<argument>></argument>
<argument>Main.java</argument>
</arguments>
<workingDirectory>${basedir}/src/main2/</workingDirectory>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.9</version>
<executions>
<execution>
<id>second-compilation-add-sources</id>
<phase>process-classes</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>src/main2</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<executions>
<execution>
<id>second-compilation-compile</id>
<phase>process-classes</phase>
<goals>
<goal>compile</goal>
</goals>
<configuration>
<excludes>
<exclude>src/main/java/**/*.java</exclude>
</excludes>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
在上面的配置中,三个插件是:
我刚试过它,它在我的机器上工作正常(Windows机器)
请注意,上面的配置只是一个例子,我通过echo命令在文本文件中动态写入一个简单的Java类,然后将其文件夹(我之前创建的src/main2
)添加到编译路径,然后编译它。全部作为process-classes
阶段的一部分,在compile
阶段之后发生
使用这种方法,您还可以测试整个代码(生成与否)作为标准test
阶段的一部分。