泽西+ Gradle与maven依赖不起作用

时间:2012-10-29 01:43:26

标签: maven jersey gradle dependency-management

您好我正在关注泽西太阳文档。我之前在

之前部署了这个简单的pom.xml
<dependency>
    <groupId>com.sun.jersey</groupId>
    <artifactId>jersey-server</artifactId>
    <version>1.14</version>
</dependency>
<dependency>
    <groupId>com.sun.jersey</groupId>
    <artifactId>jersey-grizzly2</artifactId>
    <version>1.14</version>
</dependency>

并添加存储库

  <url>https://maven.java.net/content/repositories/snapshots/</url>

然而,当我尝试使用gradle执行此操作时,它似乎无法正常工作,不会下载需要的其余依赖项,而且我必须明确地将javax.ws.rs:jsr311-api:1.1.1甚至是球衣核心。这是我的build.gradle。

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'jetty'

sourceCompatibility = 1.6

repositories {
    mavenCentral()
    maven {
        url 'https://maven.java.net/content/repositories/snapshots/'
    }
}

List compileLibraries =['com.sun.jersey:jersey-server:1.14',
                        'com.sun.jersey:jersey-grizzly2:1.14',
                        'com.sun.jersey:jersey-core:1.14',
                        'javax.ws.rs:jsr311-api:1.1.1']


dependencies {
    compile (compileLibraries )

    testCompile group: 'junit', name: 'junit', version: '4.+'
}

httpPort = 8888
stopPort = 9451
stopKey = 'foo'

这是正确的gradle行为吗?我怎么能和maven一样呢?

修改

只是为了这个,如果有人看到使用gradle的gradle构建文件很有意思,你可以去

https://github.com/necronet/XTradeJerseyimpl/

谢谢!

1 个答案:

答案 0 :(得分:3)

似乎Gradle没有正确解释从jersey-server到jersey-core的依赖性。看the pom表明,jersey-core依赖关系是在一个配置文件中,这可能是为什么它没有被提取。而jersey-core依赖于jsr311。听起来像Gradle应该在这种情况下考虑标记为'activeByDefault'的配置文件。

那就是说,你已经找到了解决方案,即直接指定两个jar - 而且配置的行数仍然少于maven xml:)

此外,看起来您需要的所有jar都可以在mavenCentral中找到,因此快照存储库没有任何贡献。

这并不能解决明确提到这两个额外罐子的需要,但我希望这能解释原因,如果你认为应该解决这个问题,你可能想在Gradle Jira上提出一个问题。