我有两个 gradle 配置的项目,projectA 和 projectB。 ProjectA是一个Spring Boot项目,有两个主要类,一个在直接运行projectA时运行,另一个在运行projectB时运行(参见下面的gradle文件)。 ProjectA 导出为 JAR,并声明为 projectB 的依赖项。 ProjectB 将 projectA.jar 中的一个类指定为其主类:
//ProjectB's build.gradle
apply plugin: 'application'
mainClassName = 'com.projectA.api.MainClassToBeRunInProjectB'
/**
* `verify` task, `run` task to be exact
*/
task verify(dependsOn:run)
dependencies{
compile (group:'com.projectA.api',name:'api-ProjectA-jar',version:'1.0.0')
}
//Download artifacts
repositories {
mavenLocal()
maven {
url 'http://nexus.projectJarLocations.local/nexus/content/groups/public/'
}
mavenCentral()
}
在projectB中运行验证步骤时,构建失败,如下所示:
acidnbass:projectB acidnbass$ gradle clean verify
> Task :run
Error: Could not find or load main class com.projectA.api.MainClassToBeRunInProjectB
FAILURE: Build failed with an exception.
为什么我无法运行projectA 中的主类?从外部源运行主类是否需要额外的配置?
最佳答案
可以通过设置这样的任务来实现:
task runApp(dependsOn: configurations.compileClasspath, type: JavaExec) {
group = "app"
classpath = sourceSets.test.runtimeClasspath
main = 'com.projectA.api.MainClassToBeRunInProjectB'
}
并通过添加依赖项作为实现
dependencies{
implementation('com.projectA.api:api-ProjectA-jar:1.0.0')
}
关于java - Gradle 从外部依赖运行 MainClass,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49640195/