如何将文件添加到maven创建的工件(jar或war)?

时间:2017-10-02 11:59:14

标签: maven

我设置了一个解析任务(阶段run上的目标prepare-package),用于创建文件并将其保存在/target/foo.bar中。如何将其添加到由maven创建的工件中(取决于模块,它可能是jarwar文件)?

我已经尝试过资源,使用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>

根据调试输出,这似乎在回购中安装了额外的东西,但是没有将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文件,但如果可能的话,我更喜欢一种方法来处理这两种工件类型 - 而且我真的需要这样做才能工作jar也是......)

有没有办法做我想做的事情?
(我不想首先在src / main / resources中保存我的文件;我认为打包过程会在放置到目录后从构建目录中选择文件,但我想我误解了一些东西......)< / p>

2 个答案:

答案 0 :(得分:0)

我将文件保存到project.build.directory。将其更改为project.build.outputDirectory表示jar插件正在拾取它,而不需要任何其他插件。不幸的是,这并没有排除war问题... :(

答案 1 :(得分:0)

我遇到了类似的问题并将生成的工件存储在

target/${project.name}-${project.version}/foo.war

更确切地说,我使用ant target

从目录创建了战争
<war warfile="target/${project.name}-${project.version}/foo.war" basedir="somedir" />

然后将它正确地添加到周围的耳朵中。