我有一个公开了Mojo的maven插件,目标是在编译阶段运行。该项目是使用mvn archetype:generate生成的,并且POM包含运行该标准附带的所有标准内容,几乎没有偏差。该项目包括几个资源文件,例如filea.txt和fileb.txt,它们打包成jar的一部分。
当插件在项目中使用时,我希望将jar中包含的文件提取并复制到宿主项目的target \ test-classes目录中。我正在尝试使用插件jar来分发一些文件+公开一些可以使用这些文件的功能。
这是一种有效的方法吗?如果是,是否可以将一些设置添加到插件POM中,以指示应该提取并复制插件中的内容?我想将此逻辑集中在插件中,而不是必须在插件主机中进行。
[我觉得这与maven-dependency-plugin或maven-resources-plugin或build-helper-maven-plugin:attach-artifact一样,已经尝试了几种不同的方法,但是认为我缺少明显的东西:
例如在插件POM中是这样的吗?
<plugins>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.1.0</version>
</plugin>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
<configuration>
<outputDirectory>${basedir}/target/test-classes</outputDirectory>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>filea.txt</include>
<include>fileb.txt</include>
</includes>
</resource>
</resources>
</configuration>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
</plugin>
<plugin>
<artifactId>maven-plugin-plugin</artifactId>
<version>3.6.0</version>
</plugin>
// etc etc
[Google fu让我失望了,一直停留在maven资源页面上。可以发布目录结构/更多信息(如果需要)。
欢呼声
[首先,我建议将需要分配的资源放到看起来已经完成的src/main/resources
中...但是删除maven-resources-plugin的配置,然后让maven进行工作。它将自动复制到target/classes/
中,然后将其打包到以后的结果jar中。
如果您的插件需要获取那些文件,这些文件可以作为常规资源通过this.getClass().getResourcesAsStream("/...")
进行访问,并将它们读取并写入新的位置,最好放在target/...
中]]