Gradle从外部依赖项运行MainClass

时间:2018-04-03 22:49:21

标签: java gradle

我有两个gradle配置的项目,projectA和projectB。 ProjectA是一个Spring引导项目,有两个主要类,一个在直接运行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运行主类?是否需要额外的配置才能从外部源运行主类?

1 个答案:

答案 0 :(得分:0)

可以通过设置如下任务来实现:

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')
}