Java 如何使用Maven将目录添加到JAR文件?

Java 如何使用Maven将目录添加到JAR文件?,java,maven,jar,Java,Maven,Jar,我试图用Maven将web应用程序打包为可运行的JAR文件。带有依赖项的jar程序集负责包含所有依赖项,但我仍然需要包含src/main/webapp 我设法用一个自定义程序集将目录添加到我的JAR中: <assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-inst

我试图用Maven将web应用程序打包为可运行的JAR文件。带有依赖项的jar程序集负责包含所有依赖项,但我仍然需要包含src/main/webapp

我设法用一个自定义程序集将目录添加到我的JAR中:

<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2
                              http://maven.apache.org/xsd/assembly-1.1.2.xsd">
    <id>webapp</id>
    <formats>
        <format>jar</format>
    </formats>
    <includeBaseDirectory>false</includeBaseDirectory>
    <fileSets>
        <fileSet>
            <directory>src/main/webapp</directory>
            <outputDirectory>/webapp</outputDirectory>
        </fileSet>
    </fileSets> 
</assembly>

网络应用
罐子
假的
src/main/webapp
/网络应用
它确实可以工作,甚至可以将这个程序集与带有依赖项的jar一起使用。但是,最后一个JAR包含webapp目录和所有依赖项,但不包含我的项目的类文件。我的议会显然正在拆除它们


我可以在程序集中保留自己项目的类文件吗?或者是否有其他方法将目录添加到JAR?

您的类将在${project.build.directory}/classes(/target/classes)中生成

因此,您应该使用该文件夹作为源目录

尝试将
src/main/webapp
更改为
{project.build.directory}/classes

我的议会显然正在拆除它们

我猜是另一种方式,它没有添加它们

您的类文件位于target/classes内,它们需要位于target/webapp/WEB-INF/classes内。我猜你需要另一条这样的规则:

<fileSet>
    <directory>target/classes</directory>
    <outputDirectory>/webapp/WEB-INF/classes</outputDirectory>
</fileSet>

目标/类别
/webapp/WEB-INF/classes

或者,您可以在程序集描述符中添加以下内容。假设您的maven项目正在构建一个webapp,那么这不仅可以放置类文件,还可以放置webapp内容

...
<dependencySets>
    <dependencySet>
        <useProjectArtifact>true</useProjectArtifact>
    </dependencySet>
</dependencySets>
...
。。。
真的
...