使用maven-compiler-plugin以及maven-shade-plugin完成maven项目打包
程序员文章站
2023-04-04 17:18:40
使用maven-compiler-plugin以及maven-shade-plugin完成maven项目打包 ......
最近负责一个纯maven
项目(项目需求尽量轻量化),需要自己完成打包工作.
因此,基于maven-compiler-plugin
以及maven-shade-plugin
完成项目的打包工作.
其中:
-
maven-compiler-plugin
负责项目编译; -
maven-shade-plugin
负责最终的打包操作.
以下所示操作,均在pom.xml
文件中进行.
项目基本属性
<groupid>com.test</groupid> <artifactid>app</artifactid> // <version>0.1.0</version> <packaging>jar</packaging> <properties> <project.build.sourceencoding>utf-8</project.build.sourceencoding> <project.reporting.outputencoding>utf-8</project.reporting.outputencoding> <java.version>1.8</java.version> </properties>
添加插件
<build> <plugins> <!-- 编译java项目--> <plugin> <groupid>org.apache.maven.plugins</groupid> <artifactid>maven-compiler-plugin</artifactid> <version>3.1</version> <configuration> <source>${java.version}</source> <target>${java.version}</target> </configuration> </plugin> <!-- 创建一个fat jar,包含所有必须的依赖 --> <!-- 根据自己的main函数替换<mainclass>...</mainclass>中的配置 --> <plugin> <groupid>org.apache.maven.plugins</groupid> <artifactid>maven-shade-plugin</artifactid> <version>3.0.0</version> <executions> <!-- run shade goal on package phase --> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <artifactset> <!-- 指定不需要打包的文件(可以使用通配符) --> <excludes> <exclude>org.apache.flink:force-shading</exclude> <exclude>com.google.code.findbugs:jsr305</exclude> <exclude>org.slf4j:*</exclude> <exclude>log4j:*</exclude> </excludes> </artifactset> <filters> <filter> <!-- do not copy the signatures in the meta-inf folder. otherwise, this might cause securityexceptions when using the jar. --> <artifact>*:*</artifact> <excludes> <exclude>meta-inf/*.sf</exclude> <exclude>meta-inf/*.dsa</exclude> <exclude>meta-inf/*.rsa</exclude> </excludes> </filter> </filters> <transformers> <transformer implementation="org.apache.maven.plugins.shade.resource.manifestresourcetransformer"> <mainclass>com.test.app.application</mainclass> </transformer> </transformers> </configuration> </execution> </executions> </plugin> </plugins>
tips:
maven-shade-plugin
比较强大,还可以解决打包文件中的依赖冲突,读者可以自行寻找相关文章.
ps:
如果您觉得我的文章对您有帮助,请关注我的微信公众号,谢谢!