2011-11-23 34 views
10

Tôi có một dự án maven sử dụng một số lọ tùy chỉnh [không tìm thấy trong kho lưu trữ bất kỳ]. Để thêm chúng cùng với việc xây dựng Maven, tôi đang sử dụng mục tiêu đính kèm trong maven. Sau đây là tập tin pom của tôi:Maven: Đính kèm nhiều hiện vật

<?xml version="1.0" encoding="UTF-8"?> 
<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>com.maximus</groupId> 
    <artifactId>adminbuild</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <packaging>pom</packaging> 
    <name>adminbuild</name> 

    <build> 
    <sourceDirectory>src/main/java</sourceDirectory> 
    <testSourceDirectory>src/test/java</testSourceDirectory> 
    <outputDirectory>target</outputDirectory> 
    <plugins> 
     <plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>build-helper-maven-plugin</artifactId> 
     <version>1.7</version> 
     <executions> 
      <execution> 
      <id>attach-artifacts</id> 
      <phase>package</phase> 
      <goals> 
       <goal>attach-artifact</goal> 
      </goals> 
      <configuration> 
       <artifacts> 
       <artifact> 
        <file>${basedir}/../../resources/dependencies/java/customjar1.jar</file> 
        <type>jar</type> 
       </artifact> 
       <artifact> 
        <file>${basedir}/../../resources/dependencies/java/customjar2.jar</file> 
        <type>jar</type> 
       </artifact> 
       </artifacts> 
      </configuration> 
      </execution> 
     </executions> 
     </plugin> 
    </plugins> 
    </build> 
</project> 

dự án của tôi có sử dụng những lọ [customjar1.jar, customjar2.jar] có sự phụ thuộc của họ vào file pom trên [adminbuild].

Khi tôi thực hiện lệnh mvn clean install, tôi nhận được lỗi sau:

[ERROR] Failed to execute goal org.codehaus.mojo:build-helper-maven-plugin:1.7:attach-artifact (attach-artifacts) on project adminbuild: The artifact with same type and classifier: jar:null is used more than once. -> [Help 1] 

Tiếp theo là sản phẩm của mvn -version lệnh:

Apache Maven 3.0.3 (r1075438; 2011-02-28 23:01:09+0530) 
Maven home: C:\maven 
Java version: 1.6.0_26, vendor: Sun Microsystems Inc. 
Java home: C:\Java\jdk1.6.0_26\jre 
Default locale: en_IN, platform encoding: Cp1252 
OS name: "windows 7", version: "6.1", arch: "amd64", family: "windows" 

Dường như cách tôi đang gắn các hiện vật là sai. Tôi có nên đính kèm nhiều hiện vật trong cùng một tệp pom không? Nếu có thì làm thế nào. Hãy giúp tôi.

Trả lời

6

Các tạo phẩm được đính kèm thường được sử dụng để cài đặt các tệp bổ sung được tạo bởi bản dựng của bạn, như các lớp của một webapp, tài liệu hoặc nguồn.

Để thêm tệp vào kho lưu trữ maven của bạn để chúng có sẵn dưới dạng phụ thuộc bạn nên sử dụng mục tiêu install-file.

Chỉnh sửa: Các tạo tác đính kèm được xác định bởi cùng nhómId và artifactId làm dự án chính của bạn nhưng với trình phân loại khác. Trong cấu hình của bạn, bạn không chỉ định trình phân loại, do đó thông báo lỗi.

2

Bạn sẽ muốn có các lọ tùy chỉnh này trong trình quản lý kho lưu trữ như nexus để chúng có thể được tải xuống/sử dụng như bình phụ thuộc thông thường.

Giả sử điều đó là không thể và thấy rằng các lọ này nằm ở vị trí nổi tiếng, có lẽ bạn có thể chỉ định các lọ tùy chỉnh này với phạm vi system trong các dự án cần chúng?

<project> 
    ... 
    <dependencies> 
    <dependency> 
     <groupId>my-group</groupId> 
     <artifactId>customjar1</artifactId> 
     <version>a.b.c</version> 
     <scope>system</scope> 
     <systemPath>${basedir}/../../resources/dependencies/java/customjar1.jar</systemPath> 
    </dependency> 
    </dependencies> 
    ... 
</project> 
Các vấn đề liên quan