gradle - 从 gradle 开始:目录结构
解决方案
Gradle 为此提供了一些不同的选项。
在所有情况下,本地文件依赖项都没有固定的文件夹结构,您可以自由选择自己喜欢的。libs
对我来说似乎很好。
以下所有示例都在 Groovy DSL 中。有关 Kotlin DSL 变体,请参阅 Gradle 用户指南。
文件依赖
要从本地文件夹添加依赖项,您可以使用Project.file() 或Project.fileTree()方法。两者都采用相对于项目目录解析的路径。
dependencies {
implementation files('libs/a.jar') // Single file
implementation files('libs/b.jar', 'libs/c.jar') // Multiple files
implementation fileTree('libs') // All files in a folder
implementation fileTree('libs') { include '*.jar' } // All jar files in a folder
}
有关详细信息,请参阅用户指南中的文件依赖项。
平面目录存储库
您还可以声明一个平面目录存储库。这里的路径是相对于您调用 Gradle 的位置,因此为了使其保持一致,您应该使其成为绝对路径(使用projectDir
or rootDir
)。
repositories {
flatDir name: 'local-libs', dirs: "$projectDir/libs" // The name is optional
}
然后,您可以使用具有组、名称和版本的正常格式来声明依赖项。但是,由于 group 被忽略,因此您可以编写任何您喜欢的内容,也可以将其省略:
dependencies {
implementation 'mysql:mysql-connector-java:5.1.49' // Real Maven coordinates
implementation ':mysql-connector-java:5.1.49' // Short-hand for local coordinates
}
有关详细信息,请参阅本节。
Maven 存储库和单独的 Gradle 项目
由于上述两种方法不包含模块元数据,这意味着您必须手动定义和包含所有传递依赖项,因此维护起来很快就会变得很麻烦。
如果可能,请尝试使用 Maven 存储库。特别是对于第三方依赖项。如果您不能使用 Maven Central 或 JCenter 等远程文件,您甚至可以定义一个本地存储库以利用元数据文件(例如.pom
files 或)。.module
当依赖于其他 Gradle 项目时,如果它们是相关的,您可以将它们构建为一个多项目,而不是构建并将它们放入“libs”文件夹中。
如果它们不相关,您也可以将它们发布到 Maven 存储库(本地或远程),或者您可以查看复合构建,尽管这是一个高级主题。
关于 MySQL 连接器软件许可证的说明
最后,如果您不知道,MySQL Connector/J 版本 5.x 的社区版是在 GPL v2 下获得许可的。这意味着您自己的应用程序也需要在 GPL v2 下获得许可。
像 8.x(我不确定 6 和 7)这样的更高版本在 GPL v2 下获得双重许可,但有一个名为The Universal FOSS Exception的规定,允许您在自己的应用程序中链接和使用该库,而不会影响您自己的许可。
如果这只是一个爱好项目,那么如果您违反了许可证,没有人会知道您的门。但是,如果是针对公司的,请小心,否则您可能会遇到法律麻烦。甲骨文会不时进行审计,他们不会让机会溜走,以高额的许可费打你一巴掌。
推荐阅读
- sql - 如何将 Char(16) 列转换为 Date Datatype 列?
- java - 将 USB 键盘数据从字节数组转换为字符串 USB4Java
- reactjs - “放大初始化”一直失败
- progressive-web-apps - 安装的 PWA 在 DNS 更新后继续连接到旧服务器
- html - 如何使部分透明的导航栏后面的内容消失?
- reactjs - 简单的 react-redux 连接函数中的错误
- javascript - 本地机器与 travis.ci 为 `Date.toISOString()` 返回不同的结果
- javascript - 计算有或没有 string.slice 的字符串中的字符
- ruby-on-rails - 在 Rails 教程中,如何在没有'require_relative "application_record"' 的情况下从 ApplicationRecord 继承 Article?
- java - 确保特定用户只能看到自己的用户详细信息 - 使用 Spring