我要去不同的来源树。在第二个源树中,两个类覆盖第一个源树中的tose。看上去:
- source-tree-2/src/com/companyname/MyClass.java
- ...
在使用Gradle编译时,我得到了错误:(20,8)错误:重复类: com.companyname.MyClass
是否有任何方法指定从源树2中获取类而忽略另一个类?使用exclude无法工作,因为这将删除包和类名指定的所有类。
sourceSets {
main.java.srcDirs += '../../sourcetree-1/'
main.java.srcDirs += '../../sourcetree-2/'
main {
java {
exclude 'com/companyname/MyClass.java'
}
}
}我需要使用gradle覆盖它们,因为首先,源树1中的类使用java.awt包中的类,而我不能在Android项目中使用这些类。源树2中的第二个类将覆盖第一个类,而不使用来自禁用包的任何类。
不幸的是,我不能使用这个类修改源树1中的类或任何其他类。所以我需要重写这个类。
发布于 2016-09-02 13:54:35
我已经定义了两个不同的源集。
android {
compileSdkVersion 24
buildToolsVersion "24.0.0"
defaultConfig {
minSdkVersion 15
targetSdkVersion 24
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
sourceSets {
seccomdev {
java {
srcDirs '../../SecCommerce-Dev/'
exclude '....'
exclude '....'
exclude '....'
}
}
main {
java {
srcDirs '../../SecCommerce-Android/src/'
srcDirs '../../SecCommerce-Android/gen/'
}
}
}
}因此,问题是如何在编译项目时组合这些源集。如果你在谷歌上搜索,你会发现这样的东西:
main {
java {
compileClasspath += seccomdev.output
runtimeClasspath += seccomdev.output
}
}在本例中,我得到了错误:错误:(122,0)无法获得.的未知属性'compileClasspath‘
另一个找到的解决方案是添加依赖项:
dependencies {
compile android.sourceSets.seccomdev
}但我得到的错误:错误:(134,0)不能将所提供的符号转换为类型依赖的对象:源集seccomdev.。
使用这样的方法:
dependencies {
compile files(android.sourceSets.seccomdev.java)
}I get:错误:无法将所提供的符号转换为文件或URI: src/seccomdev/java,.././SecCommerce-Dev/.
和使用
dependencies {
seccomdevCompile ':...'
}将至少编译gradle文件,并开始整个编译过程。不幸的是,第一个源树/sourceSet中的java文件根本没有编译。因此,我得到了数百个错误,因为无法找到第二个源集的java类中的导入。
因此,问题仍然是,由于代码依赖关系,如何将两个不同的源代码树组合在一个编译中?
https://stackoverflow.com/questions/39273749
复制相似问题