gpt4 book ai didi

maven - 如何使用 maven-install 在 Grails 2.3.0 中导出插件的传递依赖项

转载 作者:行者123 更新时间:2023-12-02 14:33:49 24 4
gpt4 key购买 nike

在 Grails 2.3.0 中,我的插件所依赖的插件在我运行 maven-install 时不会被导出。这适用于 2.2.3:

$ which grails
/Applications/grails-2.2.4/bin/grails
$ grails create-plugin myplugin
| Created plugin Myplugin
# add spring-security-core
$ cd myplugin; cat grails-app/conf/BuildConfig.groovy
...
plugins {
build(":tomcat:$grailsVersion",
":release:2.2.1",
":rest-client-builder:1.0.3") {
export = false
}
compile ":spring-security-core:1.2.7.3"
}
$ grails compile; grails maven-install
$ cat target/pom.xml|grep spring
<artifactId>spring-security-core</artifactId>
$ cat ~/.m2/repository/org/grails/plugins/myplugin/0.1/myplugin-0.1.pom|grep spring
<artifactId>spring-security-core</artifactId>

但不是在 2.3.0
$ which grails
/Applications/grails-2.3.0/bin/grails
$ grails create-plugin mynewplugin
| Created plugin Mynewplugin
# add spring-security-core
$ cd mynewplugin; cat grails-app/conf/BuildConfig.groovy
...
plugins {
build(":release:3.0.0",
":rest-client-builder:1.0.3") {
export = false
}
compile ":spring-security-core:1.2.7.3"
}
$ grails compile; grails maven-install
$ cat target/pom.xml|grep spring
$ cat ~/.m2/repository/org/grails/plugins/mynewplugin/0.1/mynewplugin-0.1.pom|grep spring
$

我的 application.properties 没有列出依赖项。我还尝试了从源代码构建的 Grails 2.3.1,但它的行为与 2.3.0 相同。目标是能够拥有一个依赖于其他插件的插件,并将这些依赖项导出到主应用程序,而无需主应用程序显式声明它们。这应该是可能的,如果是这样,我错过了什么?我已经阅读了很多其他相关的 stackoverflow 答案和 Grails 邮件列表,但没有任何东西可以为我解决这个问题。

最佳答案

我在升级我们的项目以使用 Grails 2.3 时也发现了这个问题。到目前为止,还没有发现原因,因为在某些情况下生成的 pom 确实包含一些依赖项,但在大多数情况下不是全部。然而,我发现了一个似乎允许一切构建的解决方法:

  • 在 BuildConfig.groovy 添加 use pom ,以及 grails.project.dependency.resolver = "maven" , checksums truelegacyResolve false
  • 在项目的根目录中创建一个 pom.xml。根据需要填充。
  • 将依赖项从 BuildConfig.groovy 移至 pom。插件的依赖定义(任何构建插件,我已经在 Maven 下的提供范围内定义过):
    <dependency>
    <groupId>org.grails.plugins</groupId>
    <artifactId>spring-security-core</artifactId>
    <version>1.2.7.3</version>
    <type>zip</type>
    </dependency>

    对于依赖 block 中的条目:
    <dependency>
    <groupId>some.group</groupId>
    <artifactId>artifact</artifactId>
    <version>1.0.0</version>
    </dependency>
  • 做一个grails maven-installgrails maven-deploy现在应该使用该 pom 并正常工作。我们已经将其与使用父 pom 以及全局 settings.groovy 中的一些开关联系起来,希望它们(在撰写本文时未经测试)允许我们仍然内联。
  • 关于maven - 如何使用 maven-install 在 Grails 2.3.0 中导出插件的传递依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18996190/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com