2

我正在查看一个配置了 gradle 的项目(github 上的 netflix/karyon),并且能够轻松构建战争(“gradle war”)。到目前为止,这是最好的。

哪里有战争?这很容易,只要find . -type f \( -name "*.war" \)……猜猜调试标志也会告诉我吗?

战争中有什么?只有示例项目的代码,它很棒、漂亮且轻量级。你会期待什么。

依赖项在哪里?现场无处。我确实有一个很好的主意,即它们位于隐藏的 gradle dot 目录中某处的神奇缓存中。

如何获取依赖项列表?

我想我可以“gradle clean && gradle war > out”并检查 maven.org GET 的 out 文件?我尝试了“gradle dependencies”并且它“构建成功”但没有列出依赖项。

我还尝试了“工作”的 eclipse 插件,它创建了一个 .project 文件。但这就是它所做的一切。没有向构建路径添加任何内容,也没有可言的库。

是的,我知道它可以运行,因为我可以使用 gradle jetty 插件成功运行 webapp。(也是魔法)

所以问题:

  1. 是否有用于“找出依赖项并列出它们或更好地将它们提取到目录”的 gradle 命令

  2. 为什么eclipse插件不起作用?(A) 我需要做什么才能在 eclipsify 步骤中正确识别源,以及 (B) 只是一个问题,Eclipse 如何知道 jar 文件的神奇位置和编码?

  3. 有用于 gradle 的 jboss 插件吗?还是将工作中的 gradle/jetty 项目迁移到不会导致过早老化的工作 gradle/jboss 项目的最佳实践?

4

1 回答 1

6

在我看来, karyon 是一个多级项目,根项目没有依赖项,因此您没有得到任何输出,gradle dependencies也没有为根项目提供任何输出。所以你可能应该去gradle :karyon-core:dependencies获得一些更有趣的东西。

Gradle 将依赖项保存在其缓存中,~/.gradle/caches/artifacts-<number>/filestore但它是所有项目的缓存,而不仅仅是特定项目。如果您确实需要将所有依赖项复制到一个目录,您可以使用类似于此的副本:

task copyDeps(type: Copy) {
    from configurations.compile
    into "$projectDir/deps"
}

然后gradle copyDeps将所有编译依赖项复制到deps您的项目目录中。

如果您坚持将所有依赖项放在 lib 目录中,那么您需要指定一个平面 dir 存储库

repositories {
    flatDir {
        dirs 'lib'
    }
}

不幸的是,我无法帮助您解决其他两个问题。

于 2013-03-23T11:18:41.837 回答