在上面项目中,由于不同数据库版本,依赖的 jar包版本不同;
- oracle 11g 依赖数据库驱动 ojdbc6.jar
- oracle 19c 依赖驱动包 ojdbc8.jar, orai18n.jar
现在要增加maven多环境构建,实现步骤如下:
- 新增 profile: oracle-11g,oracle-19c
- 动态引入依赖版本 ${oracle.jar},${orai18n.jar}
- 调整 插件中生成MANIFEST.MF的设置写入 Class-Path
- 优化: 未知的groupId使用 ${common.groupId},${common.version} 替换
配置变动如下
## 4 优化: 未知的groupId使用 ${common.groupId},${common.version} 替换
<properties>
<common.groupId>local</common.groupId>
<common.version>none</common.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
</properties>
## 1 新增 profile: oracle-11g,oracle-19c
<profiles>
<profile>
<id>oracle-11g</id>
<properties>
<oracle.jar>ojdbc6</oracle.jar>
<orai18n.jar>orai18n</orai18n.jar>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>oracle-19c</id>
<properties>
<oracle.jar>ojdbc8</oracle.jar>
<orai18n.jar>orai18n</orai18n.jar>
</properties>
</profile>
</profiles>
## 2 动态引入依赖版本 ${oracle.jar},${orai18n.jar}
<dependencies>
<dependency>
<groupId>oracle</groupId>
<artifactId>${oracle.jar}</artifactId>
<version>${common.version}</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/${oracle.jar}.jar</systemPath>
</dependency>
<dependency>
<groupId>${common.groupId}</groupId>
<artifactId>${orai18n.jar}</artifactId>
<version>${common.version}</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/${orai18n.jar}.jar</systemPath>
</dependency>
</dependencies>
<build>
## 3 调整 插件中生成MANIFEST.MF的设置写入 Class-Path
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<archive>
<!-- 生成MANIFEST.MF的设置 -->
<manifest>
<useUniqueVersions>false</useUniqueVersions>
<!-- jar启动入口类 -->
<mainClass>com.szkingdom.FileTools.UI.FileToolsSurface</mainClass>
<!-- 为依赖包添加路径, 这些路径会写在MANIFEST文件的Class-Path下 -->
<addClasspath>true</addClasspath>
</manifest>
<manifestEntries>
<!--将依赖.jar 写进MANIFEST.MF文件中的Class-Path-->
<Class-Path>lib/xxx.jar lib/${oracle.jar}-${common.version}.jar
lib/${orai18n.jar}-${common.version}.jar
</Class-Path>
</manifestEntries>
</archive>
<!-- 指定打包后 jar包的位置 -->
<outputDirectory>out</outputDirectory>
<excludes>
<exclude>*.jar</exclude> <!--排除打包后的 jar文件本身-->
</excludes>
</configuration>
</plugin>
</build>
每次构建打包前,勾选对应环境 profile ,然后刷新maven
然后打开 project structure,可以看到依赖版本是动态引入的
mvn clea package 打包后,不同环境验证即可
# 使用 id=oracle-19c 的 profile 进行构建
mvn clean package -Dmaven.test.skip=true -Poracle-19c
本文暂时没有评论,来添加一个吧(●'◡'●)