我正在研究AntennaPod并查看它如何构建submodules
文件夹。在
有一个jar文件android-support-v4.jar
是这个项目的一部分。在
我看不到代码中实际添加this.jar的地方。我在buck-out/bin
文件夹中也看不到它。在
以下是android_library
步骤:
android_library(
name = 'dslv-lib',
srcs = glob(['submodules/dslv/library/src/**/*.java']),
deps = [
':all-jars',
':dslv-res',
],
)
我看到它获取java文件,它依赖于所有jar和dslv res规则。但是所有jar只获取libs文件夹中的jar(该文件夹没有support-v4.jar)。在
我的问题是:为什么这个android-support-v4.jar
没有被添加(或者我遗漏了什么),添加它的构建规则是什么?在
Buck示例中完整的天线支架代码如下:
^{pr2}$更新
这是我要实施的图书馆项目。在
这是图书馆项目中的Buck文件
prebuilt_jar(
name = 'android-support-v4',
binary_jar = 'android-support-v4.jar',
visibility = [
'PUBLIC',
],
)
prebuilt_jar(
name = 'bolts',
binary_jar = 'bolts.jar',
visibility = [
'PUBLIC',
],
)
这里是我尝试过的最好的构建规则。在
### com.phonegap.plugins.facebook
android_library(
name = 'facebook-plugin-java',
srcs = glob(['com.phonegap.plugins.facebookconnect/app-FacebookLib/src/**/*.java']),
)
android_resource(
name = 'facebook-plugin-res',
package = 'com.facebook',
res = 'com.phonegap.plugins.facebookconnect/app-FacebookLib/res',
)
facebook_plugin_jar_deps = []
for jarfile in glob(['com.phonegap.plugins.facebookconnect/app-FacebookLib/libs/*.jar']):
name = 'jars__' + re.sub(r'^.*/([^/]+)\.jar$', r'\1', jarfile)
facebook_plugin_jar_deps.append(':' + name)
prebuilt_jar(
name = name,
binary_jar = jarfile,
)
android_library(
name = 'facebook-plugin-jars',
exported_deps = facebook_plugin_jar_deps,
)
在这个} 规则。我们在this commit的文件夹下添加
BUCK
文件中,Buck在lib/
下找到的每个.jar
文件都会创建一个^{support-v4-19.1.0.jar
。这在//:all-jars
构建目标中被引用为exported_dep
。//:dslv-lib
生成目标接受//:all-jars
的依赖关系,因此它最终成为IntelliJ中显示的依赖项。在相关问题 更多 >
编程相关推荐