2012-04-17 41 views
5

chúng tôi có hai dự án khác nhau. Và bộ điều khiển gần như giống nhau trong hai dự án.cách tạo jar và chiến tranh cả trong dự án

dự án A có bộ điều khiển bên trong nó. Vì vậy, tạo ra chiến tranh cho nó không phải là vấn đề.

Nhưng dự án B yêu cầu bộ điều khiển của dự án Một bộ điều khiển.

Bất kỳ cơ quan nào có thể cho tôi biết làm thế nào tôi có thể tạo tệp jar từ bộ điều khiển dự án A mà tôi có thể sử dụng trong dự án B?

+1

có thể trùng lặp của [maven triển khai tệp jar bổ sung] (http://stackoverflow.com/questions/754216/maven-deploy-additional-jar-file) –

Trả lời

13

Giải pháp mặc định cho điều này là có hai mô đun riêng biệt cho chiến tranh và một mô-đun cho mô-đun bộ điều khiển. Đừng bắt đầu chiến đấu với Maven.

+1

bạn muốn nói rằng tôi nên viết hai tệp pom để tạo tệp jar và tệp khác cho tệp chiến tranh? –

+0

Điều tốt nhất là tạo một mô-đun đa mô-đun có chứa hai mô-đun (chiến tranh, bộ điều khiển) và một phụ huynh. – khmarbaise

+3

Nhưng bạn cũng có thể sử dụng giải pháp mà tôi mô tả ở đây: http://stackoverflow.com/a/10189767/296328 – khmarbaise

-2

Bạn có thể tạo ra cả hai trong cùng một dự án và cài đặt cũng có, 1. Để Tạo jar, Sử dụng maven-jar-plugin 2. Để cài đặt Jar, Sử dụng maven-cài đặt plugin 3. Để triển khai Jar, Sử dụng maven -deploy-plugin

Lưu ý: Sử dụng kiểu làm chiến tranh, theo mặc định nó tạo tệp chiến tranh của dự án của bạn.

kiểm tra dưới đây để cấu hình chi tiết hơn: http://communitygrids.blogspot.in/2007/11/maven-making-war-and-jar-at-same-time.html

+2

Câu trả lời của bạn thực sự khó hiểu. Bạn có thể thử viết lại nó không? – Zero3

0

dự án giữ một của bao bì như chiến tranh. Thêm plugin maven jar vào tệp pom.xml của dự án A. Xây dựng dự án với "jar gói mvn clean: jar". Nó sẽ tạo ra cả một cái lọ và chiến tranh.

0

Như @Shashank đã chỉ ra, bạn có thể làm cho maven cũng thực hiện trình cắm maven-jar. Nhưng điều này sẽ chỉ tạo ra một JAR, chỉ chứa các lớp được biên dịch, chứ không phải các nguồn webapp.

Có cách dễ dàng như thế nào để làm điều đó trong một dự án đa mô-đun chỉ với một lệnh đơn giản mvn clean install mà không gọi một cách rõ ràng mvn clean install jar:jar:

Chỉ cần thêm maven-jar-plugin đến >build>plugins và gọi nó là trong giai đoạn "gói":

<project> 
    <packaging>war</packaging> 
    <!-- .. --> 
    <build> 
    <plugins> 
     <plugin> 
     <artifactId>maven-jar-plugin</artifactId> 
     <configuration> 
      <classifier>classes</classifier> 
     </configuration> 
     <executions> 
      <execution> 
      <id>package-jar</id> 
      <phase>package</phase> 
      <goals> 
       <goal>jar</goal> 
      </goals> 
      </execution> 
     </executions> 
     </plugin> 
     <plugin> 
     <artifactId>maven-war-plugin</artifactId> 
     </plugin> 
    </plugins> 
    </build> 
</project> 

Điều này sẽ tạo ra một tác phẩm lớn .war và lớp nhỏ hơn.

Cập nhật 2017/06/15: Nếu mặt khác, bạn cần một bản sao chính xác của tập tin chiến tranh (không chỉ các lớp java đóng gói), đó là loại đeo mặt nạ như một tập tin JAR , bạn có thể sử dụng kết hợp của maven-dependency-pluginmaven-install-plugin để tạo bản sao JAR của WAR. (Tôi tình cờ được nhu cầu của một giải pháp như vậy - đừng hỏi tại sao;))

Tạo một module mới được dependend trên mô-đun chiến tranh:

<project> 
    <!-- ... --> 
    <dependencies> 
    <!-- ... --> 
    <dependency> 
     <groupId>your-group-id-here</groupId> 
     <artifactId>your-war-artifact-id-here</artifactId> 
     <version>${project.version}</version> 
     <type>war</type> 
    </dependency> 
    </dependencies> 

    <build> 
    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-dependency-plugin</artifactId> 
     <executions> 
      <execution> 
      <id>copy</id> 
      <phase>package</phase> 
      <goals> 
       <goal>copy</goal> 
      </goals> 
      </execution> 
     </executions> 
     <configuration> 
      <artifactItems> 
      <artifactItem> 
       <groupId>your-group-id-here</groupId> 
       <artifactId>your-war-artifact-id-here</artifactId> 
       <version>${project.version}</version> 
       <type>war</type> 
       <overWrite>true</overWrite> 
       <destFileName>jar-copy-of-war.jar</destFileName> 
      </artifactItem> 
      </artifactItems> 
      <overWriteReleases>false</overWriteReleases> 
      <overWriteSnapshots>true</overWriteSnapshots> 
     </configuration> 
     </plugin> 
     <plugin> 
     <artifactId>maven-install-plugin</artifactId> 
     <executions> 
      <execution> 
      <id>install-copy-of-war</id> 
      <phase>install</phase> 
      <goals> 
       <goal>install-file</goal> 
      </goals> 
      <configuration> 
       <packaging>jar</packaging> 
       <classifier>copy-of-war</classifier> 
       <artifactId>${project.artifactId}</artifactId> 
       <groupId>your-group-id-here</groupId> 
       <version>${project.version}</version> 
       <file>${project.build.directory}/dependency/jar-copy-of-war.jar</file> 
       <generatePom>true</generatePom> 
      </configuration> 
      </execution> 
     </executions> 
     </plugin> 
    </plugins> 
    </build> 
</project> 

này sẽ tạo ra một bản sao của chiến tranh, đặt tên là "--copy-of-war.jar", trong khi "copy-of-war" là trình phân loại cho mô-đun này.

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