2016-05-16 125 views
4

如果我想使用jar工具創建沒有META-INF廢話一個jar文件,我可以通過-M開關,它會:如何在maven中創建沒有meta-inf文件夾的jar?

​​

注意,這是jar工具的功能。如果我使用它,我會得到一個沒有META-INF文件夾的jar,並且包含MANIFEST,基本上只是一個jar文件的存檔,其中包含我放入的任何文件/目錄。

如何使用maven-jar-plugin做到這一點?我需要這樣做以符合另一個過程。 (他們期望有一個非常具體的文件/文件夾佈局的jar,並且我不能在jar文件的根目錄下有一個META-INF文件夾。)

我已經有配置創建jar文件了, 「不想與其他插件惹...

+0

有答案可以解決你的問題嗎? – Mifeet

+0

不是,包含的依賴關係是一個問題,所以我不記得我最終做了什麼來解決它,但這裏沒有提到任何東西。 – sloven

回答

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目錄只包括當前的項目,這樣的依賴沒有附加。

6

在Maven的JAR-插件沒有選項來禁用清單文件夾的創建,但您可以禁用maven的描述目錄是這樣的:如果確實要刪除的META-INF文件夾

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

你可以使用像這樣的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> 
+0

這有一個在陰影中包含依賴關係的副作用。 – Mifeet

+1

一些用戶建議:要解決包括依賴關係的副作用,只需聲明它們:'提供了'...感謝@svermeille如果這是正確的... – GhostCat

相關問題