(注:这个问题最初是由丹·艾伦在Google+上这里提出: https://plus.google.com/114112334290393746697/posts/G6BLNgjyqeQ )
如果我跑了“MVN安装”,它会安装什么文物? 或者,如果我跑了“MVN部署”,将其部署是什么文物?
这很可能是一个相当简单的插件来写,但我不想重新发明这个,如果它已经可用编程的地方。 看起来这应该是随时可用的地方。
(注:这个问题最初是由丹·艾伦在Google+上这里提出: https://plus.google.com/114112334290393746697/posts/G6BLNgjyqeQ )
如果我跑了“MVN安装”,它会安装什么文物? 或者,如果我跑了“MVN部署”,将其部署是什么文物?
这很可能是一个相当简单的插件来写,但我不想重新发明这个,如果它已经可用编程的地方。 看起来这应该是随时可用的地方。
正如安德鲁Logvinov已经评论,任何Maven插件可以附加额外的构件。 所以,我不认为这将有可能无需实际建设该项目,并执行绑定到生命周期阶段高达所有插件package
。
我不知道任何已经存在的插件这样做的,在关闭很可能是运行实际部署到一个临时目录,然后列出包含文件。 为了避免修改你的本地库,而这样做,你会希望避免install
阶段。 在verify
阶段的比赛前直接install
,部署的魔力就可以被显式调用。
在部署插件允许使用文件的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);
}
}
}