Gradle JHipster 格式的依赖项 "groupId:artifact"
Gradle dependencies in JHipster format "groupId:artifact"
我在这里发帖是为了了解 如何 JHipster 使用 Gradle 依赖项,特别是关于我无法复制的事实其中一些放入我在 JH 项目中创建的 Gradle 子模块。
例如,以下在 Gradle 子模块中不起作用
compile "junit:junit"
错误是
Could not resolve: junit:junit
然而,从mvnrepository复制的经典作品非常好用
compile group: 'junit', name: 'junit', version: '4.12'
一些附加信息:我正在创建一个子模块,其中包含一组与测试相关的 类,主要是从 Ant 世界的另一个项目复制的大量自定义 Hamcrest 匹配器。最初的项目有很多意大利面条式的代码混乱,所以现在我正在重构一个孤立的 Gradle 模块。 testlib
模块应依赖于测试框架并包含编写良好测试所需的一切。它可以与您用来编写自己的基于 Spring 的测试的 spring-test
项目进行比较。
目前,gradle 文件看起来像
plugins {
id "java"
}
configurations {
providedRuntime
implementation.exclude module: "spring-boot-starter-tomcat"
}
repositories {
mavenLocal()
mavenCentral()
jcenter()
}
group 'org.example' //different from com.acme of super-project
version '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8
dependencies {
compile group: 'org.assertj', name: 'assertj-core', version: '3.13.2'
compile group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: '5.5.2'
compile group: 'org.hamcrest', name: 'hamcrest', version: '2.1'
compile group: 'org.mockito', name: 'mockito-core', version: '3.0.0'
compile group: 'org.springframework.boot', name: 'spring-boot', version: spring_boot_version
compile "junit:junit" //Fails
}
问题
所以问题分为两部分:
- 为什么
scope "orgId:name"
语法在 JHipster 生成的模块中有效,但在子模块中无效?它是标准 Gradle 语法的一部分吗?
- 为什么它在子模块中不起作用? JHipster 是否应用自定义插件来应用明显缺失的正确版本号?我如何在应该只包含 Java 库代码的子模块中做同样的事情?
关于 JHipster,多做一些调查会有所帮助。根据 ,Gradle 中有一个叫做 Bill Of Materials 项目的 trick,所以...
TL;DR
在子项目中添加以下内容
// import JHipster dependencies BOM
implementation platform("io.github.jhipster:jhipster-dependencies:${jhipster_dependencies_version}")
让整个街区看起来像
dependencies {
// import JHipster dependencies BOM
implementation platform("io.github.jhipster:jhipster-dependencies:${jhipster_dependencies_version}")
compile "org.assertj:assertj-core"
compile "org.junit.jupiter:junit-jupiter-api"
compile "org.hamcrest:hamcrest"
compile "org.mockito:mockito-core"
compile "org.springframework.boot:spring-boot"
compile "junit:junit"
}
长答案
也许以后我会更懂Gradle。或者只是edit this answer贡献
bom 定义了要使用的第 3 方依赖项的版本(除了其他内容),因此您可以省略显式版本。如果你不使用 bom,你也可以写 compile "junit:junit:4.12"
但请记住,jhipster 默认情况下已经使用 junit5 进行所有测试。
关于 bom 的导入,您可以按照您的建议进行,或者尝试将该依赖项应用于主 gradle 文件中的所有 gradle 子项目。
我在这里发帖是为了了解 如何 JHipster 使用 Gradle 依赖项,特别是关于我无法复制的事实其中一些放入我在 JH 项目中创建的 Gradle 子模块。
例如,以下在 Gradle 子模块中不起作用
compile "junit:junit"
错误是
Could not resolve: junit:junit
然而,从mvnrepository复制的经典作品非常好用
compile group: 'junit', name: 'junit', version: '4.12'
一些附加信息:我正在创建一个子模块,其中包含一组与测试相关的 类,主要是从 Ant 世界的另一个项目复制的大量自定义 Hamcrest 匹配器。最初的项目有很多意大利面条式的代码混乱,所以现在我正在重构一个孤立的 Gradle 模块。 testlib
模块应依赖于测试框架并包含编写良好测试所需的一切。它可以与您用来编写自己的基于 Spring 的测试的 spring-test
项目进行比较。
目前,gradle 文件看起来像
plugins {
id "java"
}
configurations {
providedRuntime
implementation.exclude module: "spring-boot-starter-tomcat"
}
repositories {
mavenLocal()
mavenCentral()
jcenter()
}
group 'org.example' //different from com.acme of super-project
version '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8
dependencies {
compile group: 'org.assertj', name: 'assertj-core', version: '3.13.2'
compile group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: '5.5.2'
compile group: 'org.hamcrest', name: 'hamcrest', version: '2.1'
compile group: 'org.mockito', name: 'mockito-core', version: '3.0.0'
compile group: 'org.springframework.boot', name: 'spring-boot', version: spring_boot_version
compile "junit:junit" //Fails
}
问题
所以问题分为两部分:
- 为什么
scope "orgId:name"
语法在 JHipster 生成的模块中有效,但在子模块中无效?它是标准 Gradle 语法的一部分吗? - 为什么它在子模块中不起作用? JHipster 是否应用自定义插件来应用明显缺失的正确版本号?我如何在应该只包含 Java 库代码的子模块中做同样的事情?
关于 JHipster,多做一些调查会有所帮助。根据
TL;DR
在子项目中添加以下内容
// import JHipster dependencies BOM
implementation platform("io.github.jhipster:jhipster-dependencies:${jhipster_dependencies_version}")
让整个街区看起来像
dependencies {
// import JHipster dependencies BOM
implementation platform("io.github.jhipster:jhipster-dependencies:${jhipster_dependencies_version}")
compile "org.assertj:assertj-core"
compile "org.junit.jupiter:junit-jupiter-api"
compile "org.hamcrest:hamcrest"
compile "org.mockito:mockito-core"
compile "org.springframework.boot:spring-boot"
compile "junit:junit"
}
长答案
也许以后我会更懂Gradle。或者只是edit this answer贡献
bom 定义了要使用的第 3 方依赖项的版本(除了其他内容),因此您可以省略显式版本。如果你不使用 bom,你也可以写 compile "junit:junit:4.12"
但请记住,jhipster 默认情况下已经使用 junit5 进行所有测试。
关于 bom 的导入,您可以按照您的建议进行,或者尝试将该依赖项应用于主 gradle 文件中的所有 gradle 子项目。