我希望标题不要混淆。我正在开发一个用于JSF项目的库。该库将打包为JAR。该项目目前设置为战争,我可以使用jar:jar目标创建JAR。拥有WAR项目使我能够自动部署更改并立即运行它们,而JAR项目需要2个构建:一个用于JAR本身,另一个用于使用此jar的测试webapp。
但是,由于项目设置为WAR,因此部署到本地maven repo的工件也是WAR,但JAR是所需的工件。有没有办法创建满足此要求的设置?
只是为了澄清:我知道常见的方法是拥有一个JAR项目和一个依赖于JAR的单独的WAR项目。我不想使用此设置,因为需要构建2个工件时会对周转时间产生负面影响。
有关此的任何提示或经验吗?
这是我目前的pom.xml:
<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>mygroupid</groupId>
<artifactId>myartifact</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<name>mylibrary</name>
<licenses>
<license>
<name>The Apache Software License, Version 2.0</name>
<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
<distribution>repo</distribution>
<comments>A business-friendly OSS license</comments>
</license>
</licenses>
<properties>
<netbeans.compile.on.save>all</netbeans.compile.on.save>
<org-netbeans-modules-projectapi.jsf_2e_language>Facelets</org-netbeans-modules-projectapi.jsf_2e_language>
<endorsed.dir>${project.build.directory}/endorsed</endorsed.dir>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<netbeans.hint.deploy.server>Tomcat</netbeans.hint.deploy.server>
</properties>
<dependencies>
<!-- my dependencies -->
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
<compilerArguments>
<endorseddirs>${endorsed.dir}</endorseddirs>
</compilerArguments>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/resources/</directory>
<targetPath>META-INF</targetPath>
</resource>
</resources>
</build>
</project>
答案 0 :(得分:2)
使用父pom.xml和两个子项:jar和war,使项目成为一个多模块项目。将所有java源代码放在jar项目中,让war项目依赖于兄弟jar项目。然后,您可以从父pom模块运行mvn package
并一步构建所有内容。
另请参阅:Building multi-module project from Maven into one war file