将插件资源文件分发到主机项目

问题描述 投票:0回答:1

我有一个公开了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资源页面上。可以发布目录结构/更多信息(如果需要)。

欢呼声

java maven maven-plugin
1个回答
0
投票

[首先,我建议将需要分配的资源放到看起来已经完成的src/main/resources中...但是删除maven-resources-plugin的配置,然后让maven进行工作。它将自动复制到target/classes/中,然后将其打包到以后的结果jar中。

如果您的插件需要获取那些文件,这些文件可以作为常规资源通过this.getClass().getResourcesAsStream("/...")进行访问,并将它们读取并写入新的位置,最好放在target/...中]]

© www.soinside.com 2019 - 2024. All rights reserved.