Maven:更改WAR结构

时间:2018-02-28 06:12:28

标签: java maven

我有一个maven项目,我将其作为WAR文件导出。 WAR结构如下所示:

Project_Name.war
            |
            |__ META_INF
            |
            |__ WEB_INF_
                        |
                        |__ lib
                        |
                        |__ classes_
                                    |
                                    |__ project_package(project src code)
                                    |
                                    |__ META_INF
                                    |
                                    |__ WEB_INF_
                                    |           |
                                    |           |__ web.xml
                                    |__ project config files

如您所见,我的项目src代码位于classes目录中。而不是这个,我想将我的项目src代码作为JAR文件包含在我的lib文件夹中。 web.xml文件夹中还有classes。我想将它放在classes文件夹之外,即WEB_INFlib和'类'。

我总是可以手动完成这两项操作。

我期望的WAR结构是这样的:

Project_Name.war
            |
            |__ META_INF
            |
            |__ WEB_INF_
                        |
                        |__ lib_
                        |       |__ Project.jar
                        |
                        |__ classes_
                        |           |
                        |__ web.xml |
                                    |__ project config files

但我想知道这是否可以通过项目来完成。 pom.xml?我很感激那里的maven退伍军人的一些帮助。谢谢。

我使用maven_war_pluginmvn install命令来构建WAR。

包括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>PROJECT_A</groupId>
    <artifactId>PROJECT_A</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>
    <dependencies>
        .
        .
        .
        .
    </dependencies>
    <build>
        <sourceDirectory>src</sourceDirectory>
        <resources>
            <resource>
                <directory>src</directory>
                <excludes>
                    <exclude>**/*.java</exclude>
                </excludes>
            </resource>
            <resource>
                <directory>config</directory>
                <excludes>
                    <exclude>**/*.java</exclude>
                </excludes>
            </resource>
        </resources>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.5.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.6</version>
                <configuration>
                    <warSourceDirectory>WebContent</warSourceDirectory>
                    <failOnMissingWebXml>false</failOnMissingWebXml>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <repositories>
        .
        .
        .
    </repositories>
    <pluginRepositories>
        .
        .
    </pluginRepositories>
</project>

1 个答案:

答案 0 :(得分:0)

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

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

https://maven.apache.org/plugins/maven-war-plugin/faq.html#attached

您扫描使用webXml属性指定web.xml位置:https://maven.apache.org/plugins/maven-war-plugin/war-mojo.html#webXml

此外,我建议遵循https://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html而不是WebContent。