当前位置: 首页 > 知识库问答 >
问题:

Gradle使用maven插件在生成的POM上管理插件

刘意
2023-03-14

我所在的团队使用maven和gradle,我有一个gradle项目,希望生成一个功能正常的pom文件,以便我们的maven用户可以继续使用maven。

我已经解决了这个问题,生成了一个具有适当依赖关系的pom,如下所示:

建筑格拉德尔节选:

task createpom(dependsOn: 'build') << {
    pom {
        project {
            groupId project.group
            artifactId project.name
            version project.version
        }
    }.writeTo("pom.xml")
}

build.finalizedBy(createpom)

这对于仅创建pom上的依赖项非常有效,但gradle的maven插件API似乎不支持定义

简而言之,我需要以下其中之一:

  • 将构建标记后处理到生成的POM中。我可以通过直接操作文件来实现,但我不想这样做

除了我目前发现的,还有更好的方法吗?


共有1个答案

李俭
2023-03-14

我选择了XML调整解决方案,结果证明它比我预期的要优雅得多。实现涉及将非托管pom添加到我的项目目录以保存构建的人工管理部分,并修改我的createpom任务,如下所示:

task createpom(dependsOn: 'build') << {
    pom {
        project {
            groupId project.group
            artifactId project.name
            version project.version
        }
    }.withXml {
        def templateXml = (new XmlParser()).parse('pom-unmanaged.xml')
        asNode().append(templateXml.build)
    }.writeTo("pom.xml")
}

pom-unmanaged.xml采用典型pom的形式,减去gradle构建脚本生成的位。

 类似资料:
  • 我有一个项目,它有一个(Java)模块,其次是一个(Android库)模块,它依赖于模块。我以前一直在我的文件中使用插件,并且我一直在使用该插件的任务来发布我的两个模块中的工件。这已经工作并产生了pom文件,这些文件反映了我的文件中的依赖项。 我想我会用新的插件替换旧的插件。但是,我看到插件生成的pom文件不包含任何依赖项。这是设计使然,这是插件中的错误还是我错误地使用了插件? 我的模块中的文件如

  • 嗨,我有一个包含两个库模块的gradle android项目: 所以LibB依赖于LibA。因此,LibB 的 build.gradle 文件如下所示: 如您所见,我想为gradle项目中的每个库模块生成. aar文件。到目前为止还不错,但是生成对LibA具有正确依赖关系的pom.xml文件并没有像预期的那样工作: pom。LibB的xml文件如下所示: 有没有办法在生成的pom文件中指定LibA

  • 默认情况下,maven publish插件为所有工件生成MD5和SHA1校验和文件。但是有没有办法让插件生成安全的校验和文件(最好是SHA512)? 这很容易重现。我刚刚初始化了一个新的项目并添加了插件及其配置 建筑格拉德尔: 我已经咨询了gradle留档和javadoc,但根本找不到校验和文件的任何提示。我知道我可以使用像这样的ANT校验和任务很容易地为工件生成校验和 但我需要“手动”将它们放在

  • 我采用的方法的另一个问题是,它收集所有构建变体的类路径,而不是选择一个。

  • 我正试着做一个包含所有项目的胖uber罐子。如果我做了“MVN包”,我得到一个uber jar下的“blah”项目标签文件夹。(blah项目有主类。)uber jar包含所有项目(作为文件夹而不是jar),但当我运行它时,它似乎无法识别feature1和feature2项目。 我在上面添加了feature1和feature2的依赖项,以便它们在uber jar文件中。这错了吗?附注。blahmes

  • 可能是个可笑的问题。但我是一个有maven和sonar的笨蛋。。。 我正在为maven使用sonar插件。它工作得很好。使用命令“mvn sonar:sonar”,它连接到我的本地主机,我可以查看端口9000上的所有内容。 我想知道的是:是否可以生成所有文件(例如。html、css等)而无需连接到9000端口的服务器? 如果有,是否有执行此操作的命令? 如果没有:(