java jar metainf_Java Maven:从JAR中排除“META-INF / maven”文件夹

我使用

Maven来构建JAR.当我检查JAR时,我在META-INF文件夹中看到了一个maven文件夹.我希望它从构建中排除.我在pom.xml中的当前构建代码如下所示:

org.apache.maven.plugins

maven-jar-plugin

true

Libraries

com.company.Main

Me

我读到使用排除标记允许您排除某些内容,但它不起作用.也许这只是指本地文件/文件夹? maven文件夹不是源代码的一部分,它只是由Maven添加的.

This回答有点工作但是使用了不同的工件,因此当我将它粘贴到我的pom.xml中时会生成第二个JAR.我想使用我当前的构建代码并排除maven文件夹,如上所述.如何使用maven构建规则完成?

maven-jar-plugin使用maven-archiver来处理包装.它提供配置addMavenDescriptor,默认情况下为true.将其设置为false应删除META-INF / maven目录.

...

false

....

你可以找到参考here.

在使用Maven打包时,如果你不想要生成`META-INF/versions/9/`目录,可以在`pom.xml`文件配置`maven-compiler-plugin`插件,指定源代码和目标JVM版本。例如: ```xml <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build> ``` 这个配置将设置Java源代码版本为1.8,目标JVM版本为1.8。这样,即使你使用Java 9或更高版本的编译器编译该代码,也不会生成`META-INF/versions/9/`目录。 在使用`maven-jar-plugin`打包时,也可以使用`maven.compiler.release`属性指定JVM版本,例如: ```xml <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>3.2.0</version> <configuration> <archive> <manifest> <mainClass>com.example.MyMainClass</mainClass> </manifest> </archive> </configuration> <executions> <execution> <id>jar</id> <goals> <goal>jar</goal> </goals> <configuration> <archive> <manifestEntries> <maven.compiler.release>8</maven.compiler.release> </manifestEntries> </archive> </configuration> </execution> </executions> </plugin> </plugins> </build> ``` 这个配置将使用Java 8的规范打包代码,并将`maven.compiler.release`属性设置为8,这样即使你使用Java 9或更高版本的`maven-jar-plugin`打包该代码,也不会生成`META-INF/versions/9/`目录。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值