【发布时间】:2017-10-02 11:59:13
【问题描述】:
我有一个 antrun 任务(目标 run 在阶段 prepare-package)创建一个文件并将其保存在 /target/foo.bar 中。如何将它添加到 maven 创建的工件中(取决于模块,它可能是 jar 或 war 文件)?
我已经尝试过使用资源、builder-helper 插件和 jar 插件 - 不走运:
<resources>
<resource>
<directory>target</directory>
<includes>
<include>**/foo.bar</include>
</includes>
</resource>
</resources>
这似乎没有任何作用。
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>3.0.0</version>
<executions>
<execution>
<id>attach-artifacts</id>
<phase>package</phase>
<goals>
<goal>attach-artifact</goal>
</goals>
<configuration>
<artifacts>
<artifact>
<file>${project.build.directory}/foo.bar</file>
<type>bar</type>
</artifact>
</artifacts>
</configuration>
</execution>
</executions>
</plugin>
根据调试输出,这似乎在 repo 中安装了一些额外的东西,但没有将 foo.bar 添加到人工制品中。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.2</version>
<configuration>
<includes>
<include>../foo.bar</include>
</includes>
</configuration>
</plugin>
也没有明显的效果。 :(
(我假设this 可能适用于war 文件,但如果可能的话,我更喜欢为两种工件类型执行此操作的一种方法——另外,我真的需要这种方法适用于jars,太……)
有没有办法做我想做的事?
(我不想先将我的文件保存在 src/main/resources 中;我认为打包过程会在将文件放在构建目录之后从构建目录中提取文件,但我想我误解了一些东西......)
【问题讨论】:
-
你为什么使用antrun task?不使用Maven?你能解释一下你的 antrun 任务在做什么吗?为什么要创建什么样的文件?
-
您期待使用maven-resource-plugin吗?
-
@nullpointer 我认为这就是我指定
resources时使用的?而且它不起作用,因为它只应该将文件复制到target目录,而不是实际打包它们:“将主源代码的资源复制到主输出目录。始终使用 project.build.resources元素来指定要复制的资源。” -
@khmarbaise 我用它调用
mvn dependency:resolve,以获取带有版本号而不是版本范围的依赖项列表。如果有更好的方法可以做到这一点,我会很高兴听到它。但即便如此,我仍然很想知道是否/如何将随机文件添加到 maven 为我生成的工件中。 :) -
看看这里:github.com/khmarbaise/add-dependency-plugin/blob/master/pom.xml(将输出添加到结果 jar 文件中)。也应该适用于战争文件...
标签: maven