需要自己写一些小工具实现一些功能时,如果不通过包管理插件进行处理,就需要花一部分时间去管理jar依赖,比如需要用到poi相关的功能等,导致无法集中精力实现核心逻辑;
所以还是推荐使用maven等插件进行管理,十分方便。但是在使用过程中遇到一些问题,罗列如下,并附上解决对应问题的配置。
以此记录对应配置,以供后续使用参考。
比如maven编译报错,则指定编译使用的jdk版本即可:
use -source 7 or higher to enable diamond operator
1. mvn编译打包指定jdk版本
2. 将依赖的jar包一起打包
3. 将配置文件等一起打包
<dependencies>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.4</version>
</dependency>
</dependencies>
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
<include>**/readme.txt</include>
</includes>
<!-- 是否替换资源中的属性-->
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<!--这里要替换成jar包main方法所在类 -->
<mainClass>com.test.Test</mainClass>
</manifest>
<manifestEntries>
<Class-Path>.</Class-Path>
</manifestEntries>
</archive>
<!--将依赖打在一起-->
<appendAssemblyId>false</appendAssemblyId>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id> <!-- this is used for inheritance merges -->
<phase>package</phase> <!-- 指定在打包节点执行jar包合并操作 -->
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
查看jar内容,可以看到resources下文件已经包含:
java -jar 执行效果: