2009-04-15 34 views
21

Tôi có một tạo phẩm đang được xây dựng và triển khai theo cách cụ thể (không phải tệp jar). Trong quá trình triển khai, một tập tin chiến tranh được xây dựng.maven triển khai tệp jar bổ sung

Làm cách nào tôi có thể định cấu hình pom để tạo tác cũng được triển khai dưới dạng tệp jar, đến một vị trí khác?

+1

"con đường riêng" mà bạn đang xây dựng và triển khai là gì? "Trong quá trình triển khai" có nghĩa là gì? Một mẫu của pom hiện tại của bạn có thể giúp làm cho câu hỏi này rõ ràng hơn. –

Trả lời

2

Bạn nên thêm phụ thuộc tương ứng của phần tạo tác vào phần phụ thuộc của tệp pom.

Ex:

<dependency> 
     <groupId>org.apache.myfaces.core</groupId> 
     <artifactId>myfaces-api</artifactId> 
     <version>1.2.2</version> 
     <scope>compile</scope> 
</dependency> 
+0

Tạo một tạo phẩm phụ thuộc vào chính nó? Tôi không hiểu điều này sẽ ảnh hưởng đến triển khai như thế nào. Và trong thực tế maven không thích tham chiếu cyclic kết quả. –

5

Các "cách maven" là để tách ra src/main/java thành một mô-đun riêng biệt, và có các tập tin chiến tranh phụ thuộc vào đó.

Nếu bạn hoàn toàn kháng cự với cách tiếp cận đó, bạn có thể sử dụng hồ sơ để thay đổi nội dung của phần tử packaging. Tôi không chắc chắn nếu đó là có thể mặc dù.

+1

Bạn không thể thay đổi bao bì trong hồ sơ trực tiếp, nhưng bạn có thể đóng gói phụ thuộc vào tài sản và thay đổi thuộc tính đó trong hồ sơ. –

3

Tách chúng là đúng cách để đi. Buộc maven để sản xuất một cuộc chiến và một cái lọ trong cùng một mô-đun là có thể nhưng sẽ gây ra vấn đề cho bạn xuống đường.

+0

Sự cố nào? Nếu bạn cần một cái bình, và nó được tạo ra bởi mô-đun đó ... thì bạn sẽ ổn khi mà cái bình đó luôn được tạo ra bởi mô-đun đó ... (và bạn có sự phụ thuộc vào cái bình đó). Nếu có một vấn đề maven cụ thể hơn bạn có trong tâm trí ... – smaudet

0

Một cách để giải quyết điều này là để mô-đun xây dựng một cái bình và sau đó sử dụng plugin lắp ráp để xây dựng tệp chiến tranh với bình trong WEB-INF/lib của cuộc chiến đó. Tôi sẽ khuyên bạn nên chống lại điều này. Bạn muốn được tốt hơn có một dự án jar và một dự án chiến tranh với một dự án cha mẹ xây dựng cả hai mô-đun.

20

Điều này blog post và nhận xét của nó có câu trả lời.

Ba cấu hình plugin này sẽ cho phép bạn xây dựng/cài đặt/triển khai phiên bản jar cùng với chiến tranh.

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-jar-plugin</artifactId> 
    <executions> 
     <execution> 
      <id>make-a-jar</id> 
      <phase>compile</phase> 
      <goals> 
       <goal>jar</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 
<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-install-plugin</artifactId> 
    <executions> 
     <execution> 
      <phase>install</phase> 
      <goals> 
       <goal>install-file</goal> 
      </goals> 
      <configuration> 
       <packaging>jar</packaging> 
       <artifactId>${project.artifactId}</artifactId> 
       <groupId>${project.groupId}</groupId> 
       <version>${project.version}</version> 
       <file> 
        ${project.build.directory}/${project.artifactId}-${project.version}.jar 
       </file> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 
<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-deploy-plugin</artifactId> 
    <executions> 
     <execution> 
      <phase>deploy</phase> 
      <goals> 
       <goal>deploy-file</goal> 
      </goals> 
      <configuration> 
       <packaging>jar</packaging> 
       <generatePom>true</generatePom> 
       <url>${project.distributionManagement.repository.url}</url> 
       <artifactId>${project.artifactId}</artifactId> 
       <groupId>${project.groupId}</groupId> 
       <version>${project.version}</version> 
       <file>${project.build.directory}/${project.artifactId}-${project.version}.jar</file> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 
+0

Sử dụng maven-install-plugin như bạn đã mô tả đã giải quyết cùng một vấn đề tôi gặp phải trong khi cố gắng cài đặt tệp jar được tạo nhưng không được triển khai bằng cách sử dụng plugin maven android bao bì thiết lập để aar. Tôi cần tệp jar như một giải pháp cho vấn đề trực quan của netbeans IDE với các phụ thuộc như vậy. – Amin

+0

Nên tự hiển nhiên, nhưng hãy nhớ nếu dự án của bạn đã tạo jar có tên khác (hoặc bạn đặt finalName trên bản dựng của mình), bạn sẽ cần phải điều chỉnh cho phù hợp với $ {build.finalName} .jar thay vì ở trên.Kiểm tra thư mục đích của bạn để xem những gì jar thực sự được sản xuất. – smaudet

23

Maven deploy phương tiện triển khai vật để một Maven Repository, không phải là một máy chủ ứng dụng.

Configure thêm vật JAR như thế này:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-jar-plugin</artifactId> 
    <executions> 
     <execution> 
      <id>make-a-jar</id> 
      <phase>compile</phase> 
      <goals> 
       <goal>jar</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 

Đính kèm vật mới này để dự án của bạn:

<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>some file</file> 
         <type>jar</type>       
        </artifact> 
       </artifacts> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 
+2

Với "xây dựng-helper-maven-plugin", tôi đã có thể triển khai chiến tranh, jar và thử nghiệm jar từ một dự án duy nhất. Thật không may, việc tạo ra các mô-đun mới không phải là một lựa chọn, vì những lý do khác sau đó là kỹ thuật. Đây là một cuộc sống tiết kiệm! – javashlook

+0

đã lưu số giờ của tôi. – Sohan

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