【问题标题】:What is proper Gradle syntax for List of Dependencies with exclusions?具有排除项的依赖项列表的正确 Gradle 语法是什么?
【发布时间】:2016-02-12 17:09:58
【问题描述】:

我既是 Gradle 新手,也是 Groovy 新手。

鉴于下面提供的示例是错误的(在排除行上失败),创建 Gradle 依赖项列表以及一个或多个排除项的正确语法是什么?错误是:

Caused by: org.gradle.api.internal.MissingMethodException: Could not find method org.jboss:jboss-common-core() for arguments...

上下文:我正在转换的旧 Maven 项目有几个 BOM(材料清单)。那是一个空的 POM 打包项目,它只有依赖项,因此您可以使用它来将它们作为一个组来依赖。我正在尝试以适合 Gradle 的方式执行此操作,并认为依赖项列表或数组将是门票。 ...除了我似乎无法写一个。 :-/

List stuff = [ "javax.servlet:javax.servlet-api",
                            "log4j:log4j",
                            "javax.jms:jms",
                            "com.oracle:ojdbc7",
                            "javax.transaction:jta",
                            "jgroups:jgroups",
                            "org.jboss:jboss-common-core" { exclude "org.jboss.logging:jboss-logging-spi" },
                            "org.jboss.cache:jbosscache-core",
                            "xml-apis:xml-apis"]

【问题讨论】:

  • 我想我明白了。不过,我会等着看其他人是否想要奶酪。 :-)

标签: maven gradle syntax pom.xml


【解决方案1】:

我无法验证它,因为我不知道某些工件的存储库,但请您尝试使用以下代码:

apply plugin: 'java'

repositories {
    mavenCentral()
    jcenter()
}

ext.stuff = [ 
    "javax.servlet:javax.servlet-api",
    "log4j:log4j",
    "javax.jms:jms",
    "com.oracle:ojdbc7",
    "javax.transaction:jta",
    "jgroups:jgroups",
    dependencies.create("org.jboss:jboss-common-core", 
        { exclude group: "org.jboss.logging", module:"jboss-logging-spi" }
    ),
    "org.jboss.cache:jbosscache-core",
    "xml-apis:xml-apis"
]

dependencies {
    compile stuff
}

task copyDeps(type: Copy) {
    from configurations.runtime
    into('deps')
}

以下代码:

dependencies.create("org.jboss:jboss-common-core", 
    { exclude group: "org.jboss.logging", module:"jboss-logging-spi" }
),

可以替换为(groovy syntax magic):

dependencies.create("org.jboss:jboss-common-core")  
    { exclude group: "org.jboss.logging", module:"jboss-logging-spi" }
,

【讨论】:

  • 关闭。你的 ')' 放错地方了。请修复。移动到 ..."org.jboss:jboss-common-core" ) {... 的末尾
  • 其实它在正确的位置 - 括号在 groovy 中是可选的,我只是添加它以获得更好的可读性。
  • 它接受这一点,因为有一个重载函数需要一个配置闭包,但如果你运行它,我认为它会“紧缩”。 .create 我使用的只有一个参数。
  • @user447607,一个参数?可以贴在下面吗?
  • 我的意思是我不是专家,但我认为这就是我所看到的。
猜你喜欢
  • 1970-01-01
  • 2017-09-08
  • 1970-01-01
  • 1970-01-01
  • 2019-04-16
  • 2019-03-10
  • 2020-07-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多