生成的pom中项目的名称和描述为null:如何解决?

时间:2014-10-30 06:19:48

标签: maven gradle

使用gradle 1.11,我在使用以下代码上传时生成存储库pom文件:

[
    install.repositories.mavenInstaller,
    uploadArchives.repositories.mavenDeployer
]*.pom*.whenConfigured { pom ->
    pom.project {
        name "${name}";
        packaging "jar";
        description "${description}";
        url "${projectURL}";

        scm {
            // everything OK here
        }

        licenses {
            // everything OK here
        }

        developers {
            // everything OK here
        }
    }   
}

"向上"在我定义的构建文件中:

project.ext {
    description = "the description here";
}

并期望name从项目名称派生。

然而,在生成的pom文件中(取自我的本地存储库),我得到:

<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <groupId>OK here</groupId>
  <artifactId>OK here</artifactId>
  <version>OK here</version>
  <!-- Oops... -->
  <name>null</name>
  <description>null</description>
  <url>OK here</url>
  <licenses>
      <!-- All the rest is OK -->

上面的代码是从外部项目复制/粘贴的,我没有触及它,因为我不太了解它的作用......但肯定存在一个错误。我希望名称和描述出现......

是否在gradle?它在代码本身吗?

编辑好的,以下有效:

  • description声明移出project.ext;
  • 引用${project.name}代替${name}${project.description}代替${description}

1 个答案:

答案 0 :(得分:1)

只需设置现有的project.description属性(不是额外的属性),也不要明确设置POM的namedescription。它们将分别默认为project.nameproject.description

(至于当前代码中会发生什么,project.ext.description将被project.description(仍为null)隐藏,name "${name}"是自我分配pom.name。)