繁体   English   中英

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

[英]How to add a directory to a JAR file with Maven?

我正在尝试使用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?

我的装配显然正在移除它们

我猜它是相反的,它不是添加它们。

您的类文件位于目标/类中,它们需要进入target / webapp / WEB-INF / classes。 我猜你需要另一个这样的规则:

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

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

因此,您应该将该文件夹用作源目录。

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

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

...
<dependencySets>
    <dependencySet>
        <useProjectArtifact>true</useProjectArtifact>
    </dependencySet>
</dependencySets>
...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM