相关疑难解决方法(0)

使用gradle的多项目测试依赖项

我有一个多项目配置,我想使用gradle.

我的项目是这样的:

  • 项目A.

    • - > src/main/java
    • - > src/test/java
  • 项目B.

    • - > src/main/java(取决于src/main/java项目A)
    • - > src/test/java(取决于src/test/java项目A)

我的Project B build.gradle文件是这样的:

apply plugin: 'java'
dependencies {
  compile project(':ProjectA')
}
Run Code Online (Sandbox Code Playgroud)

该任务compileJava工作得很好,但compileTestJava不会从项目A编译测试文件.

dependencies build multi-project gradle

133
推荐指数
13
解决办法
6万
查看次数

其他项目的gradle pull测试罐

我在maven中有一个多项目设置并试图切换到gradle.我试图弄清楚如何让一个项目的测试依赖包括另一个项目的测试jar.现在我在ProjectA中有以下内容:

packageTests = task packageTests(type: Jar) {
  classifier = 'tests'
  from sourceSets.test.output
}

tasks.getByPath(":ProjectA:jar").dependsOn(packageTests)
Run Code Online (Sandbox Code Playgroud)

在ProjectB我有:

testCompile project(path: ':ProjectA', classifier: 'tests')
Run Code Online (Sandbox Code Playgroud)

我看到我的测试无法编译.看起来他们缺少测试jar中定义的类.当我检查构建目录时,我看到ProjectA-0.1.56-SNAPSHOT-tests.jar存在.

在maven中,我有以下ProjectA:

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>2.4</version>
    <executions>
      <execution>
        <phase>package</phase>
        <goals>
          <goal>test-jar</goal>
        </goals>
      </execution>
    </executions>
  </plugin>
Run Code Online (Sandbox Code Playgroud)

这对于ProjectB来说:

<!-- Testing -->
<dependency>
  <groupId>com.example</groupId>
  <artifactId>ProjectA</artifactId>
  <version>0.1.56-SNAPSHOT</version>
  <type>test-jar</type>
</dependency>
Run Code Online (Sandbox Code Playgroud)

我怎样才能让它像maven一样工作?

gradle maven

6
推荐指数
1
解决办法
705
查看次数

依赖关系未复制到jar中(在Gradle中)

TL; DR我希望将模块的依赖关系构建到其.jar中,但它们似乎不是.

我正在使用Gradle来构建一个项目.我有两个子项目,app(一个Android模块)和tests(一个Java模块),由IntelliJ创建.

由于我想使用app内容中定义的类tests,我添加了适当的依赖项.受到这个答案的启发,我有以下设置:

应用程序/的build.gradle:

...
task jarTask(type: Jar) {
    baseName ="${project.archivesBaseName}"
    from android.sourceSets.main.java
}

configurations {
    jarConfiguration
}

artifacts {
    jarConfiguration jarTask
}
Run Code Online (Sandbox Code Playgroud)

测试/的build.gradle

...
dependencies {
    ...
    testCompile project(path: ':app', configuration: 'jarConfiguration')
}
Run Code Online (Sandbox Code Playgroud)

但是,app进口中的一个类org.json.JSONObject.由于这是由Android SDK提供的,app可以很好地找到 - 但是当我尝试运行测试时,我得到(in :tests:compileTestJava)"package org.json不存在".但是,如果我更新tests/build.gradle

...
dependencies {
    ...
    testCompile project(path: ':app', configuration: 'jarConfiguration')
    testCompile 'org.json:json:20090211'
}
Run Code Online (Sandbox Code Playgroud)

(见这里)然后测试正确运行.

这不是我所期望的 - 如果.jar没有打包它的依赖项,那么依赖于.jar的任何项目也必须明确地依赖于传递依赖 - 这不会导致依赖关系定义快速增加吗?

java android gradle android-gradle-plugin

5
推荐指数
1
解决办法
2842
查看次数