deploy:deploy-file无法从pom文件中查找工件,组等

时间:2014-06-06 16:02:51

标签: maven maven-deploy-plugin

根据documentation,当您直接指定pom文件时,deploy:deploy-file应该可以正常工作;在这种情况下,文档说您不需要“groupId,artifactId,版本和打包参数......因为部署文件目标将从给定的POM获取这些信息”。

但是,当我运行以下命令时:

mvn deploy:deploy-file -DpomFile=webapp-6.0.2.pom -Dfile=webapp-6.0.2.jar -DrepositoryId=internal -Durl=dav:http://server:9091/archiva/repository/internal -Dpackaging=jar -DgeneratePom=false

我收到此错误:

[INFO] Building Maven Default Project
[INFO]    task-segment: [deploy:deploy-file] (aggregator-style)
[INFO] ------------------------------------------------------------------------
[INFO] [deploy:deploy-file]
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Missing group, artifact, version, or packaging information

使用mvn -e -X并未发现任何其他见解。我正在使用Maven 2.0.9和maven-deploy-plugin 2.3版。

文档是错误的还是我错过了什么?

1 个答案:

答案 0 :(得分:0)

tl; dr :部署文件mojo不会从父项目继承版本号,因此它必须直接在pom中或指定为-Dversion=...参数。< / p>

根据您的观察方式,这可能是文档中的错误或缺陷。 deploy插件的源代码为:

Parent parent = model.getParent();

if ( this.groupId == null )
{
    if ( parent != null && parent.getGroupId() != null )
    {
        this.groupId = parent.getGroupId();
    }
    if ( model.getGroupId() != null )
    {
        this.groupId = model.getGroupId();
    }
}
if ( this.artifactId == null && model.getArtifactId() != null )
{
    this.artifactId = model.getArtifactId();
}
if ( this.version == null && model.getVersion() != null )
{
    this.version = model.getVersion();
}
if ( this.packaging == null && model.getPackaging() != null )
{
    this.packaging = model.getPackaging();
}

这意味着插件只会尝试从父级继承groupId,而不是版本号。在我的特殊情况下,我的pom错过了version,并且我预计它会从父母那里继承,就像其他大多数人一样。