子项目之间的 Gradle 依赖

保罗·马西奥

我试图找出在 gradle 中声明项目依赖项的正确方法,我有这两个子项目:

一个Java应用程序

apply plugin: 'java'

sourceSets {main {java {srcDirs = ['./']}}}
dependencies{compile project(':p2')}

jar {manifest.attributes(
        'Class-Path': configurations.runtime.files.collect { it.name }.join(''),
        'Main-Class': 'Main'
    )
}

和一个java库:

apply plugin: 'java-library'

sourceSets {main {java {srcDirs = ['./']}}
}

jar {
   manifest.attributes(
    'Class-Path': configurations.runtime.files.collect { it.name }.join(' ')
)
}

根项目是空的,设置只包括子项目。

dependencies下的P1项目只告诉P2必须建立P1之前,但有关配置P2为P1一个lib是什么?现在如果运行 p1 我得到:Exception in thread "main" java.lang.NoClassDefFoundError: StaticClass

Gradle构建很好:

C:\...>gradle build
BUILD SUCCESSFUL in 1s
4 actionable tasks: 4 up-to-date

我必须将 p2.jar 复制并粘贴到 p1.jar 目录才能正常运行,我怎样才能让 gradle 为我做这件事?

用户31601

如果您尝试将类打包p2p1jar 中,请尝试将其添加到 p1's build.gradle

jar {
    from project(':p2:').sourceSets.main.output
}

不过,这有点不寻常。通常情况下,如果你已经建立了一个单独的库项目,你将它打包在一个单独的 jar 中,并将其添加到依赖项目的类路径中,因此它是可重用的。

在 jar 的清单上设置 Class-Path 不会按照您编写的方式工作。manifest 属性将每个条目解释为相对于 JVM 工作目录的文件路径,但您只需为其指定每个 jar名称,并且 Gradle 在设置配置类路径时不会复制或移动文件。依靠清单来设置类路径通常不是一个好主意,因为它只有在您的 jar 完全按照清单所期望的方式排列在文件系统上时才有效。如果这确实是您想要的,那么您需要设置一个“安装”目录,其中包含按预期排列的所有必需的 jar。摇篮应用程序插件大概可以帮你实现这一目标,或等效的东西,但我”

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Gradle子项目对共享代码的依赖

来自分类Dev

Gradle子项目不会依赖于其他子项目进行编译

来自分类Dev

gradle 2.8子项目依赖项-未找到compile()

来自分类Dev

gradle cann查找依赖项的子项目

来自分类Dev

使用非编译依赖项时如何让gradle首先构建依赖项子项目

来自分类Dev

gradle子项目中的根项目中定义的依赖项会如何处理?

来自分类Dev

Gradle-子项目排除父级定义的项目依赖项

来自分类Dev

我可以使用Gradle获取所有子项目的依赖关系树吗?

来自分类Dev

gradle kotlin dsl-如何为子项目配置依赖项

来自分类Dev

Gradle / Android:将“ root”指定为子项目的依赖项

来自分类Dev

如何指定 Gradle 子项目之间的配置顺序?

来自分类Dev

如何配置一个子项目依赖于主项目的Gradle项目?

来自分类Dev

Gradle-构建子项目子项目

来自分类Dev

如何在Gradle中将其他子项目中选择的类用作测试依赖项

来自分类Dev

如何在Gradle中将其他子项目中选择的类用作测试依赖项

来自分类Dev

SBT子项目相互依赖

来自分类Dev

年级子项目和依赖项

来自分类Dev

定义SBT中子项目之间的插件依赖性?

来自分类Dev

Play 2.4中的插件,依赖项,模块和子项目之间有什么区别?

来自分类Dev

Gradle-递归子项目

来自分类Dev

Gradle:复制子项目资源

来自分类Dev

在子项目上执行gradle任务

来自分类Dev

Gradle获取子项目的版本

来自分类Dev

CloudFunction作为Gradle子项目

来自分类Dev

Gradle获取子项目的版本

来自分类Dev

Corda 模板 kotlin gradle 子项目

来自分类Dev

当子项目是当前目录时,为什么我的gradle子项目没有配置为子项目?

来自分类Dev

Gradle项目,其中包括maven项目作为子项目

来自分类Dev

gradle依赖与基于XML的依赖之间的区别

Related 相关文章

  1. 1

    Gradle子项目对共享代码的依赖

  2. 2

    Gradle子项目不会依赖于其他子项目进行编译

  3. 3

    gradle 2.8子项目依赖项-未找到compile()

  4. 4

    gradle cann查找依赖项的子项目

  5. 5

    使用非编译依赖项时如何让gradle首先构建依赖项子项目

  6. 6

    gradle子项目中的根项目中定义的依赖项会如何处理?

  7. 7

    Gradle-子项目排除父级定义的项目依赖项

  8. 8

    我可以使用Gradle获取所有子项目的依赖关系树吗?

  9. 9

    gradle kotlin dsl-如何为子项目配置依赖项

  10. 10

    Gradle / Android:将“ root”指定为子项目的依赖项

  11. 11

    如何指定 Gradle 子项目之间的配置顺序?

  12. 12

    如何配置一个子项目依赖于主项目的Gradle项目?

  13. 13

    Gradle-构建子项目子项目

  14. 14

    如何在Gradle中将其他子项目中选择的类用作测试依赖项

  15. 15

    如何在Gradle中将其他子项目中选择的类用作测试依赖项

  16. 16

    SBT子项目相互依赖

  17. 17

    年级子项目和依赖项

  18. 18

    定义SBT中子项目之间的插件依赖性?

  19. 19

    Play 2.4中的插件,依赖项,模块和子项目之间有什么区别?

  20. 20

    Gradle-递归子项目

  21. 21

    Gradle:复制子项目资源

  22. 22

    在子项目上执行gradle任务

  23. 23

    Gradle获取子项目的版本

  24. 24

    CloudFunction作为Gradle子项目

  25. 25

    Gradle获取子项目的版本

  26. 26

    Corda 模板 kotlin gradle 子项目

  27. 27

    当子项目是当前目录时,为什么我的gradle子项目没有配置为子项目?

  28. 28

    Gradle项目,其中包括maven项目作为子项目

  29. 29

    gradle依赖与基于XML的依赖之间的区别

热门标签

归档