java jar metainf_java – 从生成的jar文件中排除META-INF / maven文件夹

我正在尝试创建一个jar文件,其中包含jar中提取的所有必需类.但对于像

log4j这样的少量依赖jar,它会在META-INF / maven / *中创建一些文件夹.我有一个限制,我将放置生成的jar文件的服务器将不具有Internet连接.因此,如果此META-INF / maven / *文件夹中有任何内容,则会出现错误.

我的maven描述符如下所示

src

maven-compiler-plugin

3.3

1.6

1.6

org.apache.maven.plugins

maven-jar-plugin

false

org.apache.maven.plugins

maven-shade-plugin

package

shade

true

myclient

我能够在生成的jar中提取所需的类文件,但maven文件夹仍在META-INF下生成.我必须手动删除文件夹才能使一切正常.请提供有关如何从生成的jar文件中自动删除maven文件夹的建议.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用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、付费专栏及课程。

余额充值