(注意:这个问题最初是由 Dan Allen 在 Google+ 上提出的:https: //plus.google.com/114112334290393746697/posts/G6BLNgjyqeQ)
如果我运行“mvn install”,它将安装哪些工件?或者,如果我运行“mvn deploy”,它将部署哪些工件?
这可能是一个相当简单的插件,但如果它已经以编程方式在某处可用,我不想重新发明它。似乎这应该在某处很容易获得。
(注意:这个问题最初是由 Dan Allen 在 Google+ 上提出的:https: //plus.google.com/114112334290393746697/posts/G6BLNgjyqeQ)
如果我运行“mvn install”,它将安装哪些工件?或者,如果我运行“mvn deploy”,它将部署哪些工件?
这可能是一个相当简单的插件,但如果它已经以编程方式在某处可用,我不想重新发明它。似乎这应该在某处很容易获得。
正如Andrew Logvinov已经评论的那样,任何 maven 插件都可以附加额外的工件。因此,如果不实际构建项目并执行绑定到生命周期阶段的所有插件,我认为这是不可能的package
。
我不知道有任何预先存在的插件这样做,关闭可能是将实际部署运行到临时目录中,然后列出包含的文件。为避免在执行此操作时修改本地存储库,您需要避免该install
阶段。该verify
阶段直接发生在 之前install
,然后可以显式调用部署 mojo。
部署插件允许使用这样的文件 url 指定替代存储库:
mvn verify deploy:deploy -DaltDeploymentRepository=snapshots::default::file:///home/jh/Temp/repository
列出所有附加工件的 maven 插件的最简单实现可能如下所示:
/**
* @goal list-artifacts
* @phase verify
*/
public class ListArtifactsMojo extends AbstractMojo {
/**
* @parameter default-value="${project}"
* @required
* @readonly
*/
MavenProject project;
public void execute() throws MojoExecutionException, MojoFailureException {
Collection<Artifact> artifacts = new ArrayList<Artifact>();
artifacts.add(project.getArtifact());
artifacts.addAll(project.getAttachedArtifacts());
for (Artifact artifact : artifacts) {
System.out.println("Artifact: " + artifact);
}
}
}