java - Gradle 从外部依赖运行 MainClass

标签 java gradle

我有两个 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/

相关文章:

java - 如何分别读取android sim联系人和手机联系人

java - 我应该将哪个文件夹导入 android studio 以便我可以打开现有项目?

java - 使用rest.li时如何复用已有的数据模型

gradle compileJava 错误 : package org. junit 不存在

java - 两个服务器之间不共享 session

java - Solr接口(interface)

java - 尽管没有报告错误,但 App Engine 图表显示零 Activity ?

java - 在 PreparedStatement 中重用参数?

testing - 过滤 junit 测试套件时未找到测试

android - 无法使用 Proguard 在 Android 项目上设置 Wiremock(重复 Zip 条目错误)