我正在尝试使用Maven将Web应用程序打包为可运行的JAR文件。 jar-with-dependencies 程序集负责包含所有依赖项,但我仍然需要包含 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>
它确实有效,甚至可以将此程序集与 jar-with-dependencies 一起使用。但是,最终的JAR包含webapp目录和所有依赖项,但不包含项目的类文件。我的装配显然正在移除它们。
我可以在程序集中保留自己项目的类文件吗?或者是否有另一种方法可以将目录添加到JAR中?
答案 0 :(得分:5)
我的装配显然正在移除它们
我猜它是相反的,它是没有添加它们。
您的类文件位于目标/类中,它们需要进入target / webapp / WEB-INF / classes。我猜你需要另一个这样的规则:
<fileSet>
<directory>target/classes</directory>
<outputDirectory>/webapp/WEB-INF/classes</outputDirectory>
</fileSet>
答案 1 :(得分:1)
您的课程将在 $ {project.build.directory} / classes (/ target / classes)中生成。
因此,您应该将该文件夹用作源目录。
尝试将<directory>src/main/webapp</directory>
更改为<directory>{project.build.directory}/classes</directory>
答案 2 :(得分:0)
或者,您可以在程序集描述符中添加以下内容。假设你的maven项目正在构建一个webapp,这不仅会处理类文件,还会处理webapp内容。
...
<dependencySets>
<dependencySet>
<useProjectArtifact>true</useProjectArtifact>
</dependencySet>
</dependencySets>
...