标签: multi-project

Gradle Android buildTypes相互覆盖

我很感激任何有关这方面的帮助,因为我是一个noobie w/gradle.我有一个包含多个buildTypes的构建脚本,但是其中一个构建脚本的设置会覆盖其他构建脚本.

这是我的build.gradle:

buildscript {
    repositories {
        mavenCentral()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:0.4.2'
    }
}

apply plugin: 'android'

dependencies {
    compile project(':facebook-android-sdk-3.0.1:facebook')
    compile project(':google-play-services_lib')
    compile project(':nineoldandroids')
    compile project(':SlidingMenu-master:library')
    compile project(':ViewPagerIndicator')
    compile project(':volley')
    compile project(':windowed-seek-bar')
    compile files('compile-libs/androidannotations-2.7.1.jar', 'libs/Flurry_3.2.1.jar', 'libs/google-play-services.jar', 'libs/gson-2.2.4.jar', 'libs/picasso-1.1.1.jar', 'libs/crittercism_v3_0_11_sdkonly.jar', 'libs/gcm.jar', 'libs/apphance-library.jar')
}

android {
    buildToolsVersion "17.0"
    compileSdkVersion 17

    signingConfigs {
        debug {
            storeFile file('keystores/debug.keystore')
        }

        release {
            storeFile file('keystores/release.keystore')
            storePassword "***"
            keyAlias "***"
            keyPassword "***"
        }
    }

    buildTypes {
        debug {
            sourceSets {
                main {
                    manifest.srcFile 'AndroidManifest.xml'
                    java.srcDirs …
Run Code Online (Sandbox Code Playgroud)

android build multi-project gradle multi-module

4
推荐指数
1
解决办法
5281
查看次数

如何告诉gradle构建并将依赖项目的档案上传到本地maven

我有一个多项目问题,Gradle的文档没有任何信息(并且也无法在stackoverflow上找到).任何帮助/指导将不胜感激.

这是我的项目布局:

  • project LeftArm:生成一个jar文件
  • project RightArm:生成一个jar文件
  • project AllArms:依赖项目LeftArmRightArm并生成一个war文件

当我在AllArms项目中运行'gradle build uploadArchives'时,它会构建LeftArmRightArm项目,但它不会将jar文件(由LeftArmRightArm项目生成)上传到本地Maven 仓库.

这是我的build.gradle文件:

project LeftArm:
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'idea'
apply plugin: 'maven'

ext.artifactId = 'LeftArm'
archivesBaseName = ext.artifactId // sets filename of warfile/jarfile output
group = 'mygroup'
version = '1.0'

buildscript 
{
    repositories 
    {
    mavenLocal()
    }
}

jar 
{
    from(sourceSets['main'].allJava)
} …
Run Code Online (Sandbox Code Playgroud)

multi-project gradle

4
推荐指数
1
解决办法
6145
查看次数

Gradle的publishToMavenLocal任务未正确执行

我正在尝试创建一个基于gradle的多模块项目.还有一个项目包含不同的gradle脚本,可以实现可插入的构建配置.其中一个脚本用于将工件发布到maven存储库.这是该脚本的内容:

apply plugin: 'maven-publish'

configure(subprojects.findAll()) {
    if (it.name.endsWith('web')) {
        publishing {
            publications {
                mavenWeb(MavenPublication) {
                    from components.web
                }
            }
        }
    } else {
        publishing {
            publications {
                mavenJava(MavenPublication) {
                    from components.java
                }
            }
        }
    }
}

build.dependsOn publishToMavenLocal
Run Code Online (Sandbox Code Playgroud)

此脚本包含在其他项目的构建gradle文件中.

apply from: '../../food-orders-online-main/artifact-publish.gradle'
Run Code Online (Sandbox Code Playgroud)

当我运行构建任务时,它总是显示publishToMavenLocal任务是最新的,我无法在本地存储库中找到工件.难道我做错了什么?

publish artifacts multi-project gradle

4
推荐指数
2
解决办法
1万
查看次数

Gradle多项目自定义build.gradle文件名

我有一个多项目Gradle构建,目前通过单个build.gradle文件进行配置.

这个项目中有70多个模块,单个(巨大的)build.gradle文件使用起来很麻烦,所以我想将它拆分成小的每个模块的buildscript文件.

现在,我不想拥有70个小的build.gradle文件(每个模块中有一个),因为这会导致导航到特定的build.gradle IDE中的痛苦(文件之间的唯一区别就是它们的路径).

我想要的是我的每个模块的buildscript文件以模块名称命名.

而不是这个:

root  
|--foo\  
|--| build.gradle  
|--bar\  
|--| build.gradle 
Run Code Online (Sandbox Code Playgroud)

我要这个:

root  
|--foo\  
|--| foo.gradle  
|--bar\  
|--| bar.gradle 
Run Code Online (Sandbox Code Playgroud)

由于这似乎没有得到官方支持,我尝试了一下root build.gradle,但似乎在配置项目之前应用.gradle文件,所以这给依赖于其他项目的项目带来了错误项目:

在root build.gradle中:

subprojects { subProject ->
    rootProject.apply from: "${subProject.name}/${subProject.name}.gradle"
}
Run Code Online (Sandbox Code Playgroud)

foo.gradle,它不是标准的build.gradle文件:

project('foo') {
    dependencies {
        compile project(':bar')
    }
} 
Run Code Online (Sandbox Code Playgroud)

有没有办法让它像这样工作?

build multi-project gradle

4
推荐指数
2
解决办法
4372
查看次数

Gradle多项目命名:如何为所有子项目设置属性(例如baseName)?

我开始使用Gradle进行多项目.但是,Gradle手册没有给出关于子项目命名的最佳实践的许多提示.

我有一个名为'datalogger'的多项目,它包含两个子项目'核心'和'条目':

- datalogger
--- core
--- entries
Run Code Online (Sandbox Code Playgroud)

当我构建项目时,我得到了jar的core-1.0.jar'和'entries-1.0.jar'.如何以通用方式管理命名为'datalogger-core-1.0.jar'和'datalogger-entries-1.0.jar'?我知道,我可以更改文件夹的名称,如下所示:

- datalogger
--- datalogger-core
--- datalogger-entries
Run Code Online (Sandbox Code Playgroud)

但我认为这不会被视为好方法.我也可以手动更改archivesBaseName每个项目.但是,如前所述,我宁愿找到一种以通用方式执行此操作的方法.

multi-project gradle

3
推荐指数
1
解决办法
3080
查看次数

解析器不与依赖的sbt项目共享?

在这个似乎涉及xsbt-web-plugin的奇怪案例中,我得到了错误

unresolved dependency: play#play-json_2.10;2.2-SNAPSHOT: not found

加载server子项目时.依赖项和正确的解析程序在library子项目中指定,具体server取决于.如果我不包含webSettings在服务器中,它不会爆炸,但我试图在那里建立一个.war.

[根] /project/Build.scala

import sbt._
import Keys._

object MyBuild extends Build {
  lazy val root = Project("root", base = file(".")).aggregate(library,server)

  lazy val library = Project(id = "library", base = file("library"))

  lazy val server = Project(id = "server", base = file("server")).dependsOn(library)
}
Run Code Online (Sandbox Code Playgroud)

[根] /project/plugins.sbt

// p.s. why do I need this here instead of [root]/server/project/plugins.sbt?
addSbtPlugin("com.earldouglas" % "xsbt-web-plugin" % "0.3.0")
Run Code Online (Sandbox Code Playgroud)

[根] /library/build.sbt

scalaVersion := "2.10.1"

libraryDependencies += …
Run Code Online (Sandbox Code Playgroud)

scala multi-project sbt xsbt-web-plugin

3
推荐指数
1
解决办法
1415
查看次数

定义模块列表,该列表应在Maven多项目构建中构建

我想使用Maven -pl选项来定义哪些特定模块应包含在reactor中.如果提供了模块路径列表,则该选项有效.不幸的是,提供模块的artifactIds根本不起作用.Sonatype'Maven:The Complete Reference'文档正在使用多项目示例,其中目录名称与artifactIds匹配:

http://books.sonatype.com/mvnref-book/reference/_using_advanced_reactor_options.html

是否可以在artifactId中使用-pl选项?

module build multi-project maven

3
推荐指数
2
解决办法
2038
查看次数

如何在我的Gradle项目中包含同级项目?

我有两个具有以下目录结构的Gradle项目:

/baseDir
  /first
  /first/build.gradle
  /second 
  /second/build.gradle
Run Code Online (Sandbox Code Playgroud)

两者firstsecond都在同一层次结构上。从Gradle用户指南中,我发现只有一种包含子项目的方法。这里不是这种情况。

如何将兄弟姐妹项目第二个包含在项目中?

java package multi-project gradle

3
推荐指数
1
解决办法
1354
查看次数

多项目非子项目的Gradle中间目录

Gradle多项目结构

在RootProject中,我有build.gralde和settings.gradle.common,subProj1和subProj2是settings.gradle中的子项目

intermediateDir 不是子项目!它仅用于对subProj1,subProj2进行分组,因为它们是相关的.

每次我在根目录中运行"gradle eclipse"时,我也会在intermediateDir中获得.classpath和.project文件,我不应该这样做,因为这不是子项目!所以基本上middleDir被认为是某些任务的子项目,即使不在settings.gradle中也是如此.有什么快速的方法吗?

java multi-project gradle

2
推荐指数
1
解决办法
730
查看次数

如何在Gradle的主目录中包含多项目构建中的项目?

让我们有这种结构

在此输入图像描述

我在subproject1中如何编写我的settings.gradle文件以包含subproject1subproject2作为根Project的子项目.我的settings.gradle文件在目录中?

我试过了:

include 'root:subproject1', 'root:subproject2'
Run Code Online (Sandbox Code Playgroud)

但什么都没发生.

来自Gradle doc:

如果从没有settings.gradle文件的项目中执行Gradle,Gradle将执行以下操作:

  • 它在名为master的目录中搜索settings.gradle,该目录具有与当前目录相同的嵌套级别.
  • 如果未找到settings.gradle,则会在父目录中搜索settings.gradle文件的存在.
  • 如果未找到settings.gradle文件,则构建将作为单个项目构建执行.
  • 如果找到了settings.gradle文件,Gradle将检查当前项目是否是找到的settings.gradle文件中定义的多项目层次结构的一部分.如果没有,则构建将作为单个项目构建执行.否则,执行多项目构建.

settings project multi-project gradle

2
推荐指数
1
解决办法
7018
查看次数

为什么“jar.enabled = false”会影响 Gradle 中的依赖项?

故事:我最近发现jar.enabled = false在多项目 Gradle 项目的项目 b-features 中设置将阻止同一项目的项目 a-features 能够通过以下方式引用 B

dependencies {
    compile project(':b-features')
}
Run Code Online (Sandbox Code Playgroud)

问题:为什么jar.enabled = false阻止项目 A 成功引用项目 B?

附加信息:

根项目的 build.gradle:

group 'gradle.studies'
apply plugin: 'java'
...
Run Code Online (Sandbox Code Playgroud)

根项目的settings.gradle:

rootProject.name = 'multi-project-reference'
include 'a-features'
include 'b-features'
Run Code Online (Sandbox Code Playgroud)

项目的 build.gradle a-features

group 'gradle.studies'
apply plugin: 'java'
...
dependencies {
    compile project(':b-features')
}
...
Run Code Online (Sandbox Code Playgroud)

项目的build.gradle b-features

group 'gradle.studies'   
apply plugin: 'java'    
jar.enabled = false    
...
Run Code Online (Sandbox Code Playgroud)

a-features项目A类:

package outerproject;

import innerproject.B;

public class A {
    public …
Run Code Online (Sandbox Code Playgroud)

multi-project gradle

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

Gradle 禁用特定任务的自动子项目执行

我有一个多项目 Gradle 构建,我自定义了“运行”任务以在根项目中做一些不同的事情。但是,我不希望它在完成后调用每个子项目的“运行”任务,就像现在一样。但是这种行为应该只针对这个任务,我希望每个其他任务都按照默认值递归执行,但运行任务不是。我也不能为每个子项目全局禁用运行任务,因为它在每个子项目中单独执行时确实有目的。

build task multi-project gradle

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