是否可以让 Maven "WAR" pom.xml 将我的 类 打包到 JAR 中并将 JAR 放入 /WEB-INF/lib 文件夹中?

Is it possible to have Maven "WAR" pom.xml package up my classes up in a JAR and put the JAR in the /WEB-INF/lib folder?

我有一个简单的 Java Spring MVC 网络应用程序。我使用 Maven pom.xml 文件构建 WAR 文件。

当我执行 "maven install" 时,它会在 /WEB-INFO/classes 文件夹中生成一个 WAR 文件,其中包含我编译的 Java 类。

我的 maven 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/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>mycompany.com</groupId>
    <artifactId>myapp</artifactId>
    <packaging>war</packaging>
    <version>0.0.1-SNAPSHOT</version>
    <name>My Application</name>
    <url>http://maven.apache.org</url>
    <dependencies>

<!-- .... -->

    </dependencies>
    <build>
        <finalName>myapp</finalName>
    </build>
</project>

接下来我想混淆我的 Java 类(我将使用 Allatori 混淆器),所以我认为最简单的方法是如果我的 Java 类 都放入自己的 JAR 文件中,并与其余 JAR 一起存储在 /WEB-INF/lib 文件夹中。

有没有办法修改我的 Maven pom.xml 文件,以便它将我的 类 打包到一个 JAR 中并将 JAR 放入 /WEB-INF/lib 文件夹中?

更新:

将此添加到 'build' 部分(按照 "JF Meier" 的建议行之有效)...

    <build>
        <finalName>myapp</finalName>

        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>3.3.0</version>
                <configuration>
                    <archiveClasses>true</archiveClasses>
                </configuration>
            </plugin>
        </plugins>

    </build>

将您的 Java 类 移动到单独的 Maven 模块中,并将其作为依赖项添加到您的 WAR 项目中。然后你可以做任何必要的事情,在那个模块中创建 jar。

您可以使用 <archiveClasses> 配置(将其设置为 true)生成带有 类 的附加 jar。

另见:

https://maven.apache.org/plugins/maven-war-plugin/war-mojo.html