我需要更改maven-compiler-plugin使用的类路径值来编译测试,我无法找到任何方法...
我读过:
但这些解决方案对我不利。
更确切地说,我们正在构建客户端jar以使用此API,我们需要构建此客户端两次:
这是maven-compiler-plugin在我父POM的pluginManagement中的配置:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<includes>
<include>**/*.java</include>
</includes>
<target>1.8</target>
<source>1.8</source>
<fork>true</fork>
<encoding>UTF-8</encoding>
</configuration>
<executions>
<execution>
<id>jdk7</id>
<phase>none</phase>
<goals>
<goal>compile</goal>
</goals>
<configuration>
<source>1.7</source>
<target>1.7</target>
<fork>true</fork>
<outputDirectory>${project.build.directory}/classes/jdk7/</outputDirectory>
</configuration>
</execution>
<execution>
<id>jdk8</id>
<phase>none</phase>
<goals>
<goal>compile</goal>
</goals>
<configuration>
<fork>true</fork>
<outputDirectory>${project.build.directory}/classes/jdk8/</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
阶段设置为&#34;无&#34;默认情况下禁用这些执行,它们仅针对客户端执行。
这是我的客户端POM的配置:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<executions>
<execution>
<id>jdk7</id>
<phase>compile</phase>
</execution>
<execution>
<id>jdk8</id>
<phase>compile</phase>
</execution>
<execution>
<id>default-compile</id>
<phase>none</phase>
</execution>
</executions>
</plugin>
正如您所看到的,我已经禁用了执行&#34; default-compile&#34;,因为它直接在目标/类文件夹中编译了第3次源代码并且它已经#39在我的情况下很脏。 我只想在target / classes / jdk8中的target / classes / jdk7和JDK8类中使用JDK7类。
问题在于&#34; default-testCompile&#34;执行maven-compiler-plugin用于类路径的是:
编译失败,因为maven-compiler-plugin没有在target / classes / jdk8文件夹中查找类文件。
我试图添加compilerArguments&amp; compilerArgs配置,但它没有工作......
我如何添加&#34; target / classes / jdk8&#34;或更改&#34;目标/类&#34; to&#34; target / classes / jdk8&#34;到default-testCompile使用的类路径?
注意:我知道如果我不禁用&#34; default-compile&#34;,它将起作用,因为这些类将在&#34; target / classes&#34;但我不想编译3次来源......
答案 0 :(得分:0)
您可以使用配置文件来使用不同的配置。您必须定义两个配置文件,一个使用jdk8配置,另一个使用jdk 7配置。例如:
<profiles>
<profile>
<id>jdk7</id>
<activation>
<property>
<name>jdk7</name>
</property>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>jdk8</id>
<activation>
<property>
<name>jdk8</name>
</property>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
因此,当您想使用jdk7进行构建时,只需使用-P jdk7
进行调用,以及何时使用-P jdk8
进行jdk8调用。例如:
mvn clean install -P jdk7
答案 1 :(得分:0)
我发现解决问题的唯一方法是修改maven-compiler-plugin。
我已经添加了属性&#34; additionalClasspathElements&#34;在TestCompilerMojo中。
我很快会提出拉动请求。