2012-07-31 28 views
17

這裏組裝的根路徑是pom.xml中如何配置Maven:在罐子

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>org.springframework.webflow</groupId> 
    <artifactId>spring-js-resources-thin</artifactId> 
    <version>2.2.1.RELEASE</version> 
    <name>Spring js lib</name> 
    <description>Spring javascript library without dojo</description> 
    <build> 
     <plugins> 
      <plugin> 
       <artifactId>maven-assembly-plugin</artifactId> 
       <version>2.2.1</version> 
       <configuration> 
        <descriptors> 
         <descriptor>src/main/assembly/assembly.xml</descriptor> 
        </descriptors> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 
</project> 

這裏是assembly.xml

<assembly> 
    <id>js-jar</id> 
    <formats> 
     <format>jar</format> 
    </formats> 
    <fileSets> 
     <fileSet> 
      <directory>src/main/resources/</directory> 
      <outputDirectory>/</outputDirectory> 
      <includes> 
       <include>META-INF/**/*</include> 
      </includes> 
     </fileSet> 
    </fileSets> 
</assembly> 

的問題是,每次我打開生成的jar文件(spring-js-resources-thin-2.2.1.RELEASE -js-jar.jar),根文件夾總是被命名爲artifactid-version(spring-js-resources-thin-2.2.1.RELEASE),那麼META-INF。

我不知道有什麼方法可以構建jar文件,文件名爲artifactid-version.jar,但類路徑中沒有artifactid-version,就像maven存儲庫中的每個jar一樣。我認爲應該有一個選項或一種方法來命名<outputDirectory>

+1

您是否嘗試過使用'maven-jar-plugin'創建jar? – 2012-08-01 05:30:40

回答

39

你必須告訴Maven的組裝插件不包括在歸檔中的基本目錄可以通過使用可實現以下幾點:

<assembly> 
    <id>js-jar</id> 
    <formats> 
     <format>jar</format> 
    </formats> 
    <includeBaseDirectory>false</includeBaseDirectory> 
    <fileSets> 
     <fileSet> 
      <directory>src/main/resources/</directory> 
      <outputDirectory>.</outputDirectory> 
      <includes> 
       <include>META-INF/**/*</include> 
      </includes> 
     </fileSet> 
    </fileSets> 
</assembly> 

而關於使用maven-JAR-插件的建議是非常好的,因爲它看起來有點像你在濫用maven-assembly-plugin。

在最新版本的maven-assembly-plugin中,您應該使用.作爲根文件夾。如果您使用/,您將收到警告。

+0

是啊!這正是我需要的。謝謝。 – Dreamer 2012-08-01 15:38:33

3

像這樣將元素添加到程序集中。

<assembly> 
    <id>js-jar</id> 
    <formats> 
     <format>jar</format> 
    </formats> 

    <baseDirectory>myBaseDir</baseDirectory> 

    <fileSets> 
     <fileSet> 
      <directory>src/main/resources/</directory> 
      <outputDirectory>/</outputDirectory> 
      <includes> 
       <include>META-INF/**/*</include> 
      </includes> 
     </fileSet> 
    </fileSets> 
</assembly> 

如果關閉<includeBaseDirectory>關閉那麼你的檔案將不會有任何根。所以這取決於你想要什麼。比如,我更喜歡我的zip文件,因爲它有一個基本目錄,所以如果你在解壓縮之前忘了創建dir和cd,就不會意外地污染你的目錄。更方便了。