如何修改Maven POM文件以生成单个Fat Jar?
解决方案
要只生成单个名为assignment2.jar的Fat Jar,只需修改maven-shade-plugin的配置,让它直接替换默认生成的Jar,而非额外产出带分类符的附属Jar。具体修改点如下:
- 将
shadedArtifactAttached的值从true改为false:该参数控制是否把shaded Jar作为附属构件(带classifier)生成,设为false后,shade插件会直接覆盖默认Jar文件。 - 保留
<finalName>assignment2</finalName>配置:确保最终生成的Jar文件名符合作业要求。 - 可删除
shadedArtifactClassifier配置:因为不再生成附属Jar,这个分类符参数已无意义。
修改后的maven-shade-plugin配置片段:
<!-- Use the Maven Shade Plugin for creating a fat JAR --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>3.2.1</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <createDependencyReducedPom>false</createDependencyReducedPom> <shadedArtifactAttached>false</shadedArtifactAttached> <transformers> <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> <mainClass>org.example.Main</mainClass> </transformer> </transformers> </configuration> </execution> </executions> </plugin>
可选依赖优化
你的poi-ooxml:5.2.3依赖已经包含了poi-ooxml-schemas和xmlbeans的兼容版本,无需单独声明这两个依赖,删除它们可避免版本冲突:
<!-- 删除以下两个冗余依赖 --> <!-- <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml-schemas</artifactId> <version>4.1.2</version> </dependency> <dependency> <groupId>org.apache.xmlbeans</groupId> <artifactId>xmlbeans</artifactId> <version>5.1.1</version> </dependency> -->
修改完成后执行mvn clean package,只会生成assignment2.jar这个Fat Jar,直接用作业要求的命令java -jar assignment2.jar PDF sample.csv即可测试。
内容的提问来源于stack exchange,提问作者Roenan Bingle
相关产品推荐
相关产品推荐

