带有WAR项目布局的Maven JAR项目?

时间:2013-05-25 17:24:58

标签: maven netbeans

我希望标题不要混淆。我正在开发一个用于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>

1 个答案:

答案 0 :(得分:2)

使用父pom.xml和两个子项:jar和war,使项目成为一个多模块项目。将所有java源代码放在jar项目中,让war项目依赖于兄弟jar项目。然后,您可以从父pom模块运行mvn package并一步构建所有内容。

另请参阅:Building multi-module project from Maven into one war file