2009-06-09 49 views
5

Xin chào Tôi đang cố gắng tạo một bộ mô tả tùy chỉnh trong pom cha mẹ của tôi mà gói tất cả các phụ thuộc với các nguồn. Tôi đã assembly.xml đóng đinh khá tốt, nhưng khi tôi thêm nó vào lắp ráp POM cơ bản của tôi: lắp ráp không như vậy:Lắp ráp Maven: lắp ráp

[INFO] [assembly:assembly] 
[INFO] ------------------------------------------------------------------------ 
[ERROR] BUILD ERROR 
[INFO] ------------------------------------------------------------------------ 
[INFO] Error reading assemblies: No assembly descriptors found. 

[INFO] ------------------------------------------------------------------------ 
[INFO] Trace 
org.apache.maven.lifecycle.LifecycleExecutionException: Error reading assemblies: No assembly descriptors found. 

Nhưng lắp ráp: đơn dường như hoạt động chính xác. Tôi đã cố gắng thêm các jar-với-phụ thuộc ref vào POM là tốt, nhưng tôi không chắc chắn nếu điều này thậm chí có thể.

Đây là những gì tôi có trong pom cơ sở của tôi:

<plugin> 
    <artifactId>maven-assembly-plugin</artifactId> 
    <version>2.2-beta-3</version> 
    <dependencies> 
     <dependency> 
      <groupId>mycompany.jar.assembly</groupId> 
      <artifactId>jar-with-dependencies-and-sources-test</artifactId> 
      <version>1.0.0-SNAPSHOT</version> 
     </dependency> 
    </dependencies> 
    <executions> 
     <execution> 
      <id>make-assembly</id> 
      <phase>package</phase> 
      <goals> 
       <goal>single</goal> 
      </goals> 
      <configuration> 
       <descriptors> 
        <descriptor>assembly.xml</descriptor> 
       </descriptors> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

Có ai ra có biết ai để có được điều này để làm việc khi tôi gọi lắp ráp mvn: lắp ráp từ dòng lệnh?

Xin cảm ơn trước.

+0

Chạy mvn -X là gì? –

Trả lời

7

Tôi không chắc chắn, nhưng tôi có một sự nghi ngờ. Bạn định nghĩa assembly: single như là một phần của phase package, và xác định descriptor có trong phần tử thi hành. Điều này có nghĩa là plugin không biết nơi tìm kiếm bộ mô tả khi bạn chạy assembly: assembly. Thử sao chép phần tử <configuration> của bạn ra bên ngoài phần tử <executions>.

Một trong poms của tôi trông như thế này, và tôi sử dụng lắp ráp: lắp ráp tất cả các thời gian:

<plugin> 
    <artifactId>maven-assembly-plugin</artifactId> 
    <version>2.1</version> 
    <configuration> 
    <finalName>myJar</finalName> 
    <descriptors> 
     <descriptor>src/main/config/descriptor.xml</descriptor> 
    </descriptors> 
    <archive> 
     <manifest> 
     <mainClass>org.foo.Bar</mainClass> 
     </manifest> 
    </archive> 
    </configuration> 
</plugin> 

Note src/main/config không phải là một tiêu chuẩn đường Maven, nhưng tôi đã không xác định bất kỳ xử lý đặc biệt của nó .

+1

Điều đó đã làm được! Cảm ơn rất nhiều :) – javamonkey79

+0

Lý do tại sao phần tử nằm bên trong phần tử là do trang của plugin thực hiện như thế. Xem: http://maven.apache.org/plugins/maven-assembly-plugin/examples/sharing-descriptors.html. Tôi tự hỏi trang đó đã lỗi thời. – aberrant80

0

Bạn có assembly.xml ở đâu? Thư mục làm việc của Maven là thư mục của một mô-đun (một tệp chứa pom.xml). Nếu assembly.xml của bạn không có trong cùng thư mục với tệp pom.xml này, bạn nên chỉ định đường dẫn

+0

assembly.xml nằm trong src/main/resources/assembly của: mycompany.jar.assembly jar-with-dependencies-and-sources-test jar – javamonkey79