如果我想使用jar实用程序创建一个没有META-INF废话的jar文件,我可以传递-M开关,它将:
-M do not create a manifest file for the entries
请注意,这是jar实用程序的一项功能。如果我使用它,我会得到一个没有META-INF文件夹的jar并包含MANIFEST,基本上只是一个jar类型的存档,包含我放入的任何文件/目录。
如何使用maven-jar-plugin执行此操作?我需要这样做以符合另一个过程。 (他们希望jar具有非常特定的文件/文件夹布局,我不能在jar文件的根目录下有一个META-INF文件夹。)
我有配置来正确创建jar文件,我不想搞乱其他插件...
答案 0 :(得分:7)
在maven-jar-plugin中没有禁止创建manifest文件夹的选项,但你可以像这样禁用maven描述符目录:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/</exclude>
</excludes>
</filter>
</filters>
</configuration>
</execution>
</executions>
</plugin>
如果您想要删除META-INF文件夹,可以像这样使用maven-shade-plugin:
CREATE TABLE test_txt(field1 int, field2 string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';
LOAD DATA INPATH '/path/to/file.tsv' INTO TABLE test_txt;
CREATE TABLE test STORED AS SEQUENCEFILE
AS SELECT * FROM test_txt;
DROP TABLE test_txt;
答案 1 :(得分:4)
您可以使用maven-shade-plugin
来达到预期的效果:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.4.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<artifactSet>
<includes>
<include>${project.groupId}:${project.artifactId}</include>
</includes>
</artifactSet>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/</exclude>
</excludes>
</filter>
</filters>
</configuration>
</execution>
</executions>
</plugin>
配置过滤掉META-INF目录并仅包含当前项目,以便不附加依赖项。