Java Maven Maven资源插件复制目标jar

Java Maven Maven资源插件复制目标jar,java,maven,maven-3,Java,Maven,Maven 3,我试图使用resources插件,目的是在构建jar后将其复制到另一个目录(例如/target/runtime) 我可以看到资源是在进程开始时复制的,在构建jar之前,所以阅读它似乎需要在验证阶段运行,即在构建jar之后。然而,这是行不通的。会复制其他文件,但不会复制jar <plugin> <artifactId>maven-resources-plugin</artifactId> &

我试图使用resources插件,目的是在构建jar后将其复制到另一个目录(例如/target/runtime)

我可以看到资源是在进程开始时复制的,在构建jar之前,所以阅读它似乎需要在验证阶段运行,即在构建jar之后。然而,这是行不通的。会复制其他文件,但不会复制jar

            <plugin>
            <artifactId>maven-resources-plugin</artifactId>
            <version>3.0.1</version>
            <executions>
                <execution>
                    <id>copy-resources</id>
                    <phase>validate</phase>
                    <goals>
                        <goal>copy-resources</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>${project.build.directory}/runtime</outputDirectory>
                        <resources>
                            <resource>
                                <filtering>true</filtering>
                                <directory>${project.basedir}/target</directory>
                                <targetPath>${project.build.directory}/target/runtime</targetPath>
                                <includes>
                                    <include>*.jar</include>
                                </includes>
                            </resource>
                        </resources>
                    </configuration>
                </execution>
            </executions>
        </plugin>

maven资源插件
3.0.1
复制资源
验证
复制资源
${project.build.directory}/runtime
真的
${project.basedir}/target
${project.build.directory}/target/runtime
*jar先生
`
[...]
org.apache.maven.plugins
我已经用过很多次了,似乎能胜任这项工作。

`
[...]
org.apache.maven.plugins

我已经使用过多次,似乎已经完成了这项工作。

资源复制插件定义中的阶段定义为验证。此插件运行时未构建Jar。定义了有关生命周期的更多信息

如果将插件阶段更改为verify,则它会成功复制文件,如下所示


资源复制的插件定义阶段定义为验证。此插件运行时未构建Jar。定义了有关生命周期的更多信息

如果将插件阶段更改为verify,则它会成功复制文件,如下所示


要清楚,您希望生成的JAR同时出现在
target
target/runtime
中,或者只出现在
target/runtime
中?同时出现在target和target/runtime中为什么需要这样的东西?非常重要的一点是,为什么配置为对JAR文件进行过滤,这是完全错误的!是的,这是一件非常奇怪的事情。。。你能解释一下你想解决什么问题吗?说得清楚一点,你希望生成的JAR同时出现在
target
target/runtime
,或者只出现在
target/runtime
?同时出现在target和target/runtime中为什么需要这样的东西?非常重要的一点是,为什么配置为对JAR文件进行过滤,这是完全错误的!是的,这是一件非常奇怪的事情。。。你能解释一下你想解决什么问题吗?我认为问题不在于将依赖项jar复制到某个位置。问题是将构建的jar复制到目标/运行时。这不会复制依赖项jar。此处的工件仅指新构建的jar,而不是依赖项jar,请检查应答中提到的Apache maven链接谢谢。我对这里提到的Junit依赖项感到困惑。您提到的页面有不同的部分,其中指定了如何复制构建的工件。我认为问题不在于将依赖项jar复制到某个位置。问题是将构建的jar复制到目标/运行时。这不会复制依赖项jar。此处的工件仅指新构建的jar,而不是依赖项jar,请检查应答中提到的Apache maven链接谢谢。我对这里提到的Junit依赖项感到困惑。您提到的页面有不同的部分,其中指定了如何复制构建的工件。
`<project>
  [...]
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <version>3.0.0</version>
        <executions>
          <execution>
            <id>copy</id>
            <phase>package</phase>
            <goals>
              <goal>copy</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <artifactItems>
            <artifactItem>
              <groupId>junit</groupId>
              <artifactId>junit</artifactId>
              <version>3.8.1</version>
              <type>jar</type>
              <overWrite>false</overWrite>
              <outputDirectory>${project.build.directory}/alternateLocation</outputDirectory>
              <destFileName>optional-new-name.jar</destFileName>
            </artifactItem>
          </artifactItems>
          <outputDirectory>${project.build.directory}/wars</outputDirectory>
          <overWriteReleases>false</overWriteReleases>
          <overWriteSnapshots>true</overWriteSnapshots>
        </configuration>
      </plugin>
    </plugins>
  </build>
  [...]
</project>`