[英]Create multi-release jar using maven profiles
我正在嘗試使用 maven 和它的編譯器插件創建一個多版本 jar。 我想通過使用配置文件來控制目標 JDK。 我創建了兩個配置文件,一個用於 jdk8,另一個用於 jdk11,以及一個帶有通用選項的構建插件定義。
<profiles>
<profile>
<id>target-jdk8</id>
<activation>
<jdk>[1.8,)</jdk>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<executions>
<execution>
<id>compile-jdk8</id>
<phase>compile</phase>
<goals>
<goal>compile</goal>
</goals>
<configuration combine.self="append">
<source>1.8</source>
<target>1.8</target>
<excludes>
<exclude>module-info.java</exclude>
</excludes>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>target-jdk11</id>
<activation>
<jdk>[11,)</jdk>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<executions>
<execution>
<id>compile-jdk11</id>
<goals>
<goal>compile</goal>
</goals>
<configuration combine.self="append">
<multiReleaseOutput>true</multiReleaseOutput>
<release>11</release>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
<build>
<plugins>
...
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<verbose>true</verbose>
<fork>true</fork>
<compileSourceRoots>
<compileSourceRoot>${basedir}/src/main/java</compileSourceRoot>
</compileSourceRoots>
<compilerArgs>
<arg>-h</arg>
<arg>${project.build.directory}/include</arg>
</compilerArgs>
</configuration>
<executions>
<execution>
<id>compile-java</id>
<phase>none</phase>
<goals>
<goal>compile</goal>
</goals>
</execution>
</executions>
</plugin>
...
</plugins>
</build>
我遇到的問題是在運行mvn package -P \\!target-jdk8,target-jdk11
時出現error: modules are not supported in -source 6 (use -source 9 or higher to enable modules)
。 我們是如何獲得 -source 6 的? 在這種情況下,我不是為 JDK 11 構建的嗎? 顯然,我的 maven-compiler-plugin 配置覆蓋沒有從配置文件中應用,但我不明白為什么。
我遇到了同樣的問題,就我而言,我解決了它在 pom 配置中更改版本的問題
<build>
<sourceDirectory>src/main/java</sourceDirectory>
<testSourceDirectory>src/test/java</testSourceDirectory>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<source>11</source>
<target>11</target>
</configuration>
</plugin>
</plugins>
<finalName>${project.artifactId}</finalName>
</build>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.