【问题标题】:Why Does gradle eclipseClasspath task does not include transitive project dependencies?为什么 gradle eclipseClasspath 任务不包含传递项目依赖项?
【发布时间】:2013-10-27 23:38:45
【问题描述】:

我创建了一个简单的例子(名字没有任何意义):

文件夹结构:

gradleMultiProject
    build.gradle
    core
        build.gradle
        src
            main
                java
                    Core.java
    database
        build.gradle
        src
            main
                java
                    Database.java
    settings.gradle
    webapp
        build.gradle
        src
            main
                java
                    Webapp.java

以下是上述文件:

build.gradle(gradleMultiProject 文件夹下的根 gradle 构建文件)

subprojects {
    apply plugin: 'java'
    apply plugin: 'eclipse'
}

settings.gradle include 'core', 'database', 'webapp'

gradleMultiProject\core\src\main\java\Core.java

package main.java;

public class Core
{
    public static String HELLO_MESSAGE = "hello world!";
}

Core 的 build.gradle

task hello {
    println "hello from core!"
}



gradleMultiProject\database\src\main\java\Database.java

package main.java;

public class Database
{
  public void saveMessage()
  {
    System.out.println(Core.HELLO_MESSAGE);
  }
}

数据库的build.gradle

dependencies {
    compile project(':core')
}



gradleMultiProject\webapp\src\main\java

package main.java;

public class Webapp
{
  public static void main(String[] args)
  {
    Database database = new Database();
    database.saveMessage();
    System.out.println(Core.HELLO_MESSAGE);
  }
}

Webapp 的 build.gradle

dependencies {
    compile project(':database')
}





Gradle 编译一切都很好(gradle build)。它甚至可以很好地列出传递依赖项(gradle 依赖项)。但是,当我尝试为 webapp 项目生成 .classpath 文件(gradle eclipseClasspath)时,它不包含核心。

为什么?!?!?!?!?!

【问题讨论】:

  • 您的构建脚本的一个问题是它只将eclipse 插件应用于subprojects,但它需要应用于allprojects
  • 为什么需要将eclipse插件应用于“allprojects”?
  • 因为只需要完成一次的工作由应用到根项目的插件完成。
  • 这已经解决了吗?还是仍然造成问题?
  • 有同样的问题。有人能解决这个问题吗?

标签: gradle build.gradle gradle-eclipse


【解决方案1】:

实际上这不是问题,因为 eclipse 在数据库中“导出”核心。这意味着它将出现在任何需要数据库项目的项目中。

我刚刚创建了这个确切的项目并运行“gradle eclipse”并且没有构建错误,因为 webapp 项目需要数据库项目,而数据库项目需要并导出核心项目。要查看更多信息,请查看 eclipse 中的构建路径。

【讨论】:

    猜你喜欢
    • 2020-02-12
    • 1970-01-01
    • 1970-01-01
    • 2020-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-29
    相关资源
    最近更新 更多