maven - 如何使用 maven 生成要包含在 Jar 文件中的资源?

标签 maven

在我的构建过程中,我需要通过外部工具生成一些文件。对于我的最小可编译示例,我将“外部工具”简化为以下脚本:

mkdir -p target/generated-resources
echo "hello world" > target/generated-resources/myResource.txt

现在我想在构建期间执行我的外部工具,并且生成的资源应该包含在 war 文件中。我找不到任何关于应该如何完成的文档,所以我只是猜测我需要将生成的资源写入 target/generated-resources .所以也许这是一个问题?

我使用以下构建配置创建了一个 pom.xml 文件:

<build>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <version>1.2.1</version>
            <executions>
                <execution>
                    <phase>generate-resources</phase>
                    <goals>
                        <goal>exec</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <executable>./createResource.sh</executable>
            </configuration>
        </plugin>
    </plugins>
</build>

如果我运行 mvn package我的 createResource.sh 脚本成功执行并创建了 myResource.txt 文件。但是 myResource.txt 文件不包含在生成的 .jar 文件中。

我注意到如果我添加它会起作用

<resources>
  <resource>
    <directory>target/generated-resources</directory>
  </resource>
</resources>

到我的构建配置,但我担心如果其他插件可能会以不同的方式使用此目录,这可能会导致问题(是吗?我真的找不到关于 target 目录的约定的任何信息)。

另外,我更喜欢使用通常的 maven 约定的解决方案(如果存在这种情况的约定)。

如何在使用 maven 构建期间正确生成要包含在 jar 文件中的资源?

最佳答案

Maven 的约定(或至少主要用途)是在 (target/generated-resources/[plugin/process]) 内部生成资源。
但是与生成的源和编译器插件不同,生成的资源不是由 jar 插件专门处理的,因此您必须将其添加为资源(使用新资源,如您所做的或 build-helper-plugin)。

如果你按照惯例把你生成的所有东西放在生成资源的子目录下,你就不用担心其他插件如何使用它。

关于maven - 如何使用 maven 生成要包含在 Jar 文件中的资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24201580/

相关文章:

eclipse - 如何将配置文件添加到 Eclipse 中的默认 Maven 目标?

java - Spring 与 Maven : Maven does not find my resources

xml - 在原型(prototype)-post-generate.groovy 脚本中为 Maven 原型(prototype)使用​​ XmlParser

java - @ExceptionHandler 响应在 Tomcat 中不起作用

java - OpenCSV所有数据存储在单行版本(5.1)和数据丢失

java - Gradle Application 插件的 Maven 替代(等效)

java - 什么时候运行我自己的 Maven 存储库?

安卓工作室 : Gradle failed to resolve Dependencies

java - 如何在 Jenkins 中运行 Cucumber JVM 测试

java - 如何忽略或修复重复类警告?