對於MAVEN項目,我們存在將一個工程同樣的代碼部署到不同的環境上去的場景,且這些環境的jdk版本可能會不同,那么如何一份代碼打不同的jdk版本的包呢?
基於maven我們就可以很方便的做到這點。
1、在項目的pom文件中加入如下配置(主要配置)
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.0</version> <configuration> <source>${java.version}</source> <target>${java.version}</target> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>3.1.0</version> <configuration> <archive> <manifest> <addDefaultImplementationEntries>true</addDefaultImplementationEntries> </manifest> </archive> </configuration> </plugin> </plugins> </build> <profiles> <profile> <id>default</id> <activation> <activeByDefault>true</activeByDefault> <!--默認激活該profile--> </activation> <properties> <java.version>1.8</java.version> <默認用1.8版本> </properties> </profile> <profile> <id>jdk17</id> <properties> <java.version>1.7</java.version> <該配置用1.7版本> </properties> <build> <plugins> <plugin> <artifactId>maven-jar-plugin</artifactId> <executions> <execution> <phase>package</phase> <goals> <goal>jar</goal> </goals> <configuration> <classifier>jdk17</classifier> </configuration> </execution> </executions> </plugin> </plugins> </build> </profile> </profiles>
2、用mvn命令構建項目
mvn -P jdk17 clean
mvn -P jdk17 install #安裝的時候會出現2個包,1.8版本的與1.7版本的都生成了,如:blog-1.0.2.jar、blog-1.0.2-jdk17.jar
如果需要發布項目到服務器 mvn -P jdk17 -P <depoly配置ID> depoly
3、項目中引用
<!-- 引用1.8編譯版本 --> <dependency> <groupId>org.test</groupId> <artifactId>blog</artifactId> <version>0.1</version> </dependency> <!-- 引用1.7編譯版本 --> <dependency> <groupId>org.test</groupId> <artifactId>blog</artifactId> <version>0.1</version> <classifier>jdk17</classifier> </dependency>
本文主要技術點:maven中的profile、classifier技術