Maven项目构建到jar和war

时间:2017-05-15 05:34:55

标签: jar maven-3 war

我有一个包含以下 pom.xml 的项目,我从中删除了一些不需要的东西。我打算发生的是生成一个jar文件并最终生成一个war包,其中包含jar文件作为库。不幸的是,以下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>
    <artifactId>test</artifactId>
    <groupId>com.test.abcd</groupId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>
    <name>Test Application</name>

    ....

    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>${maven-compiler-plugin.version}</version>
            <configuration>
                <annotationProcessorPaths>
                    <path>
                        <groupId>org.mapstruct</groupId>
                        <artifactId>mapstruct-processor</artifactId>
                        <version>${mapstruct.version}</version>
                    </path>
                </annotationProcessorPaths>
            </configuration>
        </plugin>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <configuration>
                <warSourceDirectory>target/www/</warSourceDirectory>
            </configuration>
            <executions>
                <execution>
                    <id>build-war-in-classes</id>
                    <phase>package</phase>
                    <goals>
                        <goal>war</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>

</project>

即使在程序包阶段生成jarwarwar也不会包含jar文件(WEB-INF/lib/test-0.0.1-SNAPSHOT.jar)一个图书馆,而不是我看到以下课程,

META-INF/
META-INF/MANIFEST.MF
....
WEB-INF/
WEB-INF/classes/
....

可能导致此行为的原因是什么?

1 个答案:

答案 0 :(得分:1)

我认为您在war插件配置中缺少conf标志:

        <configuration>
          <archiveClasses>true</archiveClasses>
        </configuration>

来自https://maven.apache.org/plugins/maven-war-plugin/faq.html

  

如何在我的webapp中创建包含类的JAR?

     

如果您只想将类和资源打包为WEB-INF / lib中的JAR而不是WEB-INF / classes下的松散文件,   使用以下配置:

          <plugin>
            <artifactId>maven-war-plugin</artifactId>
            <version>3.1.0</version>
            <configuration>
              <archiveClasses>true</archiveClasses>
            </configuration>
          </plugin>