4

嗨,我正在关注泽西太阳文档。我之前部署过这个简单的 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 甚至 jersey -核。这是我的 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/

谢谢!!

4

1 回答 1

3

似乎 Gradle 没有正确解释从 jersey-server 到 jersey-core 的依赖关系。查看pom表明 jersey-core 依赖项位于配置文件中,这可能是它没有被拾取的原因。而 jersey-core 对 jsr311 有依赖。在这种情况下,听起来 Gradle 可能应该考虑标记为“activeByDefault”的配置文件。

也就是说,您已经找到了解决方案,即直接指定两个 jar - 与 maven xml 相比,配置的行数仍然更少 :)

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

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

于 2012-11-16T07:43:12.057 回答