2012-07-31 22 views
17

Đây là pom.xmlLàm thế nào để cấu hình maven: đường dẫn gốc lắp ráp trong jar

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

và đây là 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> 

Vấn đề là, mỗi lần tôi mở tạo tệp jar (spring-js-resources-thin-2.2.1.RELEASE-js-jar.jar), thư mục gốc luôn được đặt tên là artifactid-version (spring-js-resources-thin-2.2.1.RELEASE), sau đó là META-INF.

Tôi tự hỏi có cách nào để xây dựng tệp jar với tên tệp artifactid-version.jar, nhưng KHÔNG CÓ artifactid-version trong đường dẫn lớp, giống như mọi bình trong kho lưu trữ maven. Tôi nghĩ rằng nên có một lựa chọn hoặc một cách để đặt tên cho <outputDirectory>.

+1

Bạn đã thử sử dụng 'maven-jar-plugin' để tạo jar không? –

Trả lời

39

Bạn phải nói với maven-lắp ráp-plugin không bao gồm các thư mục cơ sở trong các kho lưu trữ mà có thể đạt được bằng cách sử dụng như sau:

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

Và những gợi ý về việc sử dụng maven-jar-plugin là rất tốt, có vẻ như một chút rằng bạn đang sử dụng sai maven-assembly-plugin.

Trong các phiên bản mới nhất của plugin maven-assembly, bạn nên . làm thư mục gốc. Nếu bạn sử dụng /, bạn sẽ nhận được cảnh báo.

+0

Vâng! Đó chính xác là những gì tôi cần. Cảm ơn bạn. – Dreamer

3

Thêm phần tử vào assembly như vậy.

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

Nếu bạn tắt <includeBaseDirectory> thì lưu trữ của bạn sẽ không có bất kỳ thư mục gốc nào. Vì vậy, nó phụ thuộc vào những gì bạn muốn. Ví dụ, tôi thích các tệp zip của tôi, để có một thư mục cơ sở để nó không vô tình làm ô nhiễm thư mục của bạn nếu bạn quên tạo thư mục và cd vào nó trước khi giải nén. Thuận tiện hơn nhiều.

Các vấn đề liên quan