簡體   English   中英

如何在maven中創建沒有meta-inf文件夾的jar?

[英]How to create a jar without meta-inf folder in maven?

如果我想使用jar實用程序創建一個沒有META-INF廢話的jar文件,我可以傳遞-M開關,它將:

   -M  do not create a manifest file for the entries

請注意,這是jar實用程序的一項功能。 如果我使用它,我將得到一個沒有META-INF文件夾並包含MANIFEST的jar,基本上只是jar類型的存檔,包含我放入的任何文件/目錄。

如何使用maven-jar-plugin執行此操作? 我需要這樣做以符合另一個過程。 (他們期望一個具有非常特定的文件/文件夾布局的jar,我不能在jar文件的根目錄下有一個META-INF文件夾。)

我有配置來正確創建jar文件,我不想搞亂另一個插件......

在maven-jar-plugin中沒有禁用創建清單文件夾的選項,但您可以禁用maven描述符目錄,如下所示:

         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <configuration>
                <archive>
                    <addMavenDescriptor>false</addMavenDescriptor>
                    <manifest>
                        <addClasspath>false</addClasspath>
                    </manifest>
                </archive>
            </configuration>
        </plugin>

如果您想要刪除META-INF文件夾,可以使用maven-shade-plugin,如下所示:

        <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>

您可以使用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目錄,僅包含當前項目,以便不附加依賴項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM