【问题标题】:Gradle Run MainClass from external dependencyGradle 从外部依赖运行 MainClass
【发布时间】:2018-04-03 22:49:20
【问题描述】:

我有两个 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 运行主类?从外部源运行主类是否需要额外的配置?

【问题讨论】:

    标签: java gradle


    【解决方案1】:

    可以通过设置这样的任务来实现:

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

    【讨论】:

      猜你喜欢
      • 2015-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-21
      • 1970-01-01
      • 2012-08-29
      • 1970-01-01
      相关资源
      最近更新 更多