如何将自定义构建的jar文件注册为maven主要工件?

Luk*_*ski 11 jar maven gmaven-plugin maven-antrun-plugin

我有一个项目希望提供一个jar文件:

<packaging>jar</packaging>
Run Code Online (Sandbox Code Playgroud)

但jar是以自定义方式构建的,因此使用jar:jar完成的默认包装已被禁用

<plugin>
  <artifactId>maven-jar-plugin</artifactId>
  <version>2.3.2</version>
  <executions>
    <execution>
      <id>default-jar</id>
      <phase>none</phase>
    </execution>
  </executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)

但是当我想要应用阴影时:在现有的罐子上涂上阴影我会收到错误

项目主要工件不存在.

我假设maven不知道我的自定义工具创建的.jar文件.如何让它知道,因为antrun attachArtifact不起作用

<attachartifact file="./bin/classes.jar" classifier="" type="jar"/>
Run Code Online (Sandbox Code Playgroud)

我得到的错误是

发生了Ant BuildException:org.apache.maven.artifact.InvalidArtifactRTException:对于工件{:jar}:附加工件必须具有与其对应的主工件不同的ID.

所以这不是注册主工件的方法......有没有(没有编写自定义java插件)?

谢谢,卢卡斯

Luk*_*ski 3

我检查了 JarMojo 的源代码,它让我知道如何使用 Groovy 解决它(通过 gmaven)

<plugin>
  <groupId>org.codehaus.gmaven</groupId>
  <artifactId>gmaven-plugin</artifactId>
  <version>1.3</version>
  <executions>
    <execution>
      <id>set-main-artifact</id>
      <phase>package</phase>
      <goals> 
        <goal>execute</goal>
      </goals>
      <configuration>
        <source>
          project.artifact.setFile(new File("./bin/classes.jar"))
        </source>
      </configuration>
    </execution>
  </executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)

它有效!:)