我很感激任何有关这方面的帮助,因为我是一个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) 我有一个多项目问题,Gradle的文档没有任何信息(并且也无法在stackoverflow上找到).任何帮助/指导将不胜感激.
这是我的项目布局:
war文件当我在AllArms项目中运行'gradle build uploadArchives'时,它会构建LeftArm和RightArm项目,但它不会将jar文件(由LeftArm和RightArm项目生成)上传到本地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) 我正在尝试创建一个基于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任务是最新的,我无法在本地存储库中找到工件.难道我做错了什么?
我有一个多项目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)
有没有办法让它像这样工作?
我开始使用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每个项目.但是,如前所述,我宁愿找到一种以通用方式执行此操作的方法.
在这个似乎涉及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) 我想使用Maven -pl选项来定义哪些特定模块应包含在reactor中.如果提供了模块路径列表,则该选项有效.不幸的是,提供模块的artifactIds根本不起作用.Sonatype'Maven:The Complete Reference'文档正在使用多项目示例,其中目录名称与artifactIds匹配:
http://books.sonatype.com/mvnref-book/reference/_using_advanced_reactor_options.html
是否可以在artifactId中使用-pl选项?
我有两个具有以下目录结构的Gradle项目:
/baseDir
/first
/first/build.gradle
/second
/second/build.gradle
Run Code Online (Sandbox Code Playgroud)
两者first和second都在同一层次结构上。从Gradle用户指南中,我发现只有一种包含子项目的方法。这里不是这种情况。
如何将兄弟姐妹项目第二个包含在项目中?

在RootProject中,我有build.gralde和settings.gradle.common,subProj1和subProj2是settings.gradle中的子项目
intermediateDir 不是子项目!它仅用于对subProj1,subProj2进行分组,因为它们是相关的.
每次我在根目录中运行"gradle eclipse"时,我也会在intermediateDir中获得.classpath和.project文件,我不应该这样做,因为这不是子项目!所以基本上middleDir被认为是某些任务的子项目,即使不在settings.gradle中也是如此.有什么快速的方法吗?
让我们有这种结构

我在subproject1中如何编写我的settings.gradle文件以包含subproject1和subproject2作为根Project的子项目.我的settings.gradle文件在主目录中?
我试过了:
include 'root:subproject1', 'root:subproject2'
Run Code Online (Sandbox Code Playgroud)
但什么都没发生.
来自Gradle doc:
如果从没有settings.gradle文件的项目中执行Gradle,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) 我有一个多项目 Gradle 构建,我自定义了“运行”任务以在根项目中做一些不同的事情。但是,我不希望它在完成后调用每个子项目的“运行”任务,就像现在一样。但是这种行为应该只针对这个任务,我希望每个其他任务都按照默认值递归执行,但运行任务不是。我也不能为每个子项目全局禁用运行任务,因为它在每个子项目中单独执行时确实有目的。