如何从maven获取实际的输出文件名

Tom*_*s F 2 ant maven

我尝试配置maven ant插件,将构建的工件复制到自定义位置:

<plugins>
  <plugin>
    <artifactId>maven-antrun-plugin</artifactId>
    <executions>
      <execution>
        <phase>install</phase>
        <goals>
          <goal>run</goal>
        </goals>
        <configuration>
          <tasks>

            <copy verbose="true" 
              file="target/${project.build.finalName}.${project.packaging}"
              tofile="${user.home}/tmp/test/${project.build.finalName}.${project.packaging}"/>

          </tasks>
        </configuration>
      </execution>
    </executions>
  </plugin>
</plugins>
Run Code Online (Sandbox Code Playgroud)

这个工作正常,只要包装是标准包装之一......但如果项目的包装是"捆绑"(生成.jar),那么$ {project.packaging}变量就是"捆绑"并且实际文件以".jar"结尾=复制失败.

如何获取放入输出目录的文件的"真实"名称?

qxo*_*qxo 7

在ant build.xml中使用:

${project.build.directory}/${project.artifactId}-${project.version}.jar
Run Code Online (Sandbox Code Playgroud)


Aar*_*lla 3

没有办法可靠地做到这一点。例如,一个 POM 可以有多个工件作为结果(二进制 JAR、源 JAR、测试二进制 JAR、测试源 JAR)。其中哪一项是正确的复制项?

可能的解决方案:

  1. ${project.packaging}用。。。来代替jar。在大多数情况下应该有效。
  2. 使用文件集而不是硬编码文件名,让 Ant 根据模式找出名称。