我在这里发布内容是为了了解 如何使用JHipster处理Gradle依赖项,特别是关于我无法将其中一些复制到我拥有的Gradle子模块中的事实在我的JH项目中创建的。
例如,以下内容在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语法的一部分吗?答案 0 :(得分:0)
关于JHipster,更多的调查有所帮助。根据{{3}}的说法,Gradle中有一个技巧称为材料清单项目,因此...
将以下内容添加到子项目中
// 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。或者只是this answer?贡献
答案 1 :(得分:0)
BOM定义了要使用的第三方依赖项的版本(除其他外),因此您可以省略显式版本。如果您不使用Bom,也可以编写compile "junit:junit:4.12"
,但请记住,默认情况下,jhipster对所有测试都使用junit5。
关于bom的导入,您可以按照您的建议进行操作,或尝试将该依赖项应用于主gradle文件中的所有gradle子项目。