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-plugin
và maven-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ó 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) –