一、定义
Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建工具。Gradle使用一种基于Groovy的特定领域语言来声明项目设置,取代了基于XML的Maven语法。它强调项目的可配置性、性能和多项目构建,支持增量构建。在Gradle中使用jar包是非常常见的,那么这些jar包应该放在哪里呢?
二、放在本地仓库
Gradle本地仓库是Gradle默认为项目提供的仓库,通常情况下,我们下载的Jar包放在本地仓库可以保证项目的稳定性。默认情况下,Gradle的本地仓库位于用户目录下的“.gradle”文件夹下的“caches”目录中,里面包含了从maven中央仓库下载的Jar包和本地构建的Jar包,以及其他插件等信息。
我们可以通过在构建脚本中增加以下代码来控制Jar包是否从本地仓库下载:
repositories { mavenCentral() }
如果需要从本地仓库下载Jar包,Gradle把Jar包的Dependency表示成“org.gradle:foo:1.0”,它将在本地仓库中搜索jars/foo-1.0.jar文件作为依赖项。如果在本地仓库中没有找到,Gradle会从默认的远程存储库中搜索。Gradle在构建过程中缓存所有从远程存储库和本地仓库中找到的Jar包。
三、放在项目目录中
除了放在本地仓库中,我们还可以将Jar包放在项目目录中。这在需要使用特定版本的Jar包或者使用自定义Jar包时非常有用,也可以确保特定版本的Jar包在所有开发人员之间的一致性。
这样做的方法是在项目目录下创建一个libs文件夹,将jar包放在里面,然后在Gradle的构建脚本中使用以下代码来设置:
dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) }
其中,dir指需要扫描的目录,可以是相对路径或绝对路径,include参数指允许包含的文件,这里我们只包含.jar文件。Gradle会自动搜索该目录,并将其转换为依赖库,我们可以像使用其他库一样使用它们:
import com.example.MyClass ... MyClass myObject = new MyClass()
四、放在远程仓库
Gradle支持从远程仓库下载Jar包,这在需要使用或共享公共库时非常有用,也可以通过配置私有存储库来下载自定义Jar包。要使用远程存储库,必须在构建脚本中声明远程存储库。例如,我们可以使用以下代码从Maven仓库下载Jar包:
repositories { mavenCentral() } dependencies { implementation 'com.google.guava:guava:30.1-jre' }
在这个例子中,我们声明了Maven中央仓库作为远程存储库,并使用dependency声明了需要在此构建中使用的guava库。
五、从其他项目中导入
在多个项目中使用相同的Jar包是常见的,这时我们可以使用GRADLE中的Project-to-Project依赖项。在此模式下,Gradle会将另一个项目中的Jar包作为依赖传递到当前项目中,我们可以像使用其他库一样使用它们。我们可以使用以下代码声明项目到项目的依赖项:
dependencies { implementation project(":MyProject") }
其中“MyProject”是我们要依赖的项目的名称,Gradle会自动搜索它的构建输出,包括其所有库和jar包,依赖关系以及其他项目内容,并将其添加到构建脚本的依赖关系图中,然后可以使用它们。
总结
本文介绍了Gradle下载的jar包应该放在哪里。我们可以把jar包放在本地仓库,这是Gradle默认提供的仓库,也可以把jar包放在项目目录中,这样可以保证特定版本的jar包在所有开发人员之间的一致性。另外,我们也可以把Jar包放在远程仓库,用于共享或自定义Jar包,并且可以使用Project-to-Project依赖项从其他项目中导入Jar包。根据具体的需求,我们可以灵活使用这些方法选择合适的存储方式。