Gradle - 如何从魔法缓存中提取依赖项?

Rob*_*ian 2 jboss jetty netflix gradle

我正在寻找一个用gradle配置的项目(github上的netflix/karyon),并且能够轻松地构建战争("gradle war").到目前为止,这一切都很好.

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

什么在战争中?只有示例项目的代码,这是伟大的,漂亮的和轻量级的.你会期待什么.

依赖项在哪里?现场无处可去.我确实知道它们位于隐藏的gradle点目录中的某个神奇缓存中.

如何获取依赖项列表?

我想我可以'清理干净&& gradle war> out'并检查maven.org GET的输出文件?我尝试了"gradle依赖"并且"构建成功"但没有列出依赖项.

我还尝试了"工作"的eclipse插件,创建了一个.project文件.但就是这样.没有添加任何东西到buildpath,也没有libs可以说.

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

所以问题:

  1. 是否有一个gradle命令用于"找出依赖关系并列出它们或更好地将它们提取到目录"

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

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

erd*_*rdi 6

在我看来,karyon是一个多级项目,根项目没有依赖项,因此你没有输出,gradle dependencies没有为根项目提供输出.所以你应该去找gradle :karyon-core:dependencies更有趣的东西.

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

task copyDeps(type: Copy) {
    from configurations.compile
    into "$projectDir/deps"
}
Run Code Online (Sandbox Code Playgroud)

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

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

repositories {
    flatDir {
        dirs 'lib'
    }
}
Run Code Online (Sandbox Code Playgroud)

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