当前位置: 首页 > 知识库问答 >
问题:

在Android库中使用提供的/compileonly依赖项

左丘繁
2023-03-14

对于一个项目,我有这样类型的结构:

依赖关系{只编译文件树(dir:'../lib/build/outputs/jar',include:['*.jar'])...}

这很好,但前提是jar已经由上一个构建生成,这意味着我必须启动./gradlew build两次才能使其工作。

我认为问题在于,与常规依赖项(例如CompileOnly项目(':lib'))不同,在不请求构建子项目的情况下计算文件树依赖项,并且在第一次构建时,没有向类路径添加jar文件。

我尝试了prebuild.dependson(':lib:makejar'),但是没有成功,因为它是在求值之后执行的。

我不能将lib切换到Java插件,因为它是特定于Android的代码,而且我需要为其他项目构建aar,那么有没有更好的方法将compileOnly指令用于这个模块呢?或者是一种在应用程序构建之前强制构建库的方法。Gradle被评估?

共有1个答案

周意智
2023-03-14

将此添加到您的build.gradle(应用程序)中

compile fileTree(include: ['*.jar'], dir: 'libs')

或者直接编译jar文件,如下所示

compile files('libs/your_filename_in_libs_folder.jar')
 类似资料:
  • 我正在使用com.android.tools.build:Gradle:3.1.1和最新的Gradle版本(https://services.Gradle.org/distributions-snapshots/gradle-4.8-20180417000132+0000-all.zip)。 当我使用compileOnly依赖项时,其中有些不能编译,有些会编译。例如。 我的印象比任何依赖项都只能编

  • 在为android项目添加新的依赖项时,特别是在中,在中,有三个作用域选项compile/provide/apk。

  • 问题内容: 我们为其他内部应用程序提供了一个客户端jar,以连接到我们应用程序的REST API。我们的API依赖于一些标准的Jakarta库。将这些JAR文件包含在我们的客户端jar文件中是最佳实践吗?还是只记录依赖关系,并由客户机来确保它们在类路径上有那些jar? 问题答案: 你应该 不 捆绑任何第三方jar文件到您自己的罐子作为一位超级罐子,但它是很好的,包括所有所需在分发比方说在lib目录

  • Q1我如何在LibA中包含依赖项,这样当一些其他项目包含这个库时,它就不应该担心我的库的内部依赖项。 Q3当某人包含一个来自jcenter的库时,是否会带来所有的依赖关系? 任何帮助都将非常感谢。:)

  • 我正在尝试构建一个Bukkit插件。该插件还使用exp4j。最终结果需要在发布的jar中包含exp4j代码,但不包含Bukkit代码。 我按照这个答案的建议将依赖项复制到中,并使用这个答案将Bukkit声明为已提供。我的build.gradle现在看起来像这样: 这非常有效,我可以从命令行使用Gradle愉快地构建和运行项目。问题在于Intellij(或者可能是Gradle idea插件)无法识别

  • 我目前正在尝试将一个通过RFC连接到SAP系统的旧Java EE解决方案迁移到Quarkus。由于项目使用maven,我再次面临sapjco3的问题。来自SAP的jar库,防止该库被重命名。如果我像那样添加库作为依赖项 它将被添加到lib目录中,名称为com.sap.sapjco3-3.1.jar.不幸的是,最终以异常结束 JAVAlang.ExceptionInInitializerError: