如何为本地 JAR 依赖项指定 "sources" JAR?
How to specify "sources" JAR for local JAR dependency?
我的 Gradle / Buildship 项目中有一个 *.jar
文件,该文件位于 lib
文件夹中。我通过以下方式将其包含在我的 build.gradle
中:
compile files('libs/local-lib.jar')
我也有一个相应的local-lib-sources.jar
文件,我想附加到它。在 Eclipse 中,对于手动管理的依赖项,这是通过构建路径条目 ->
属性 ->
Java 源附件的上下文菜单进行的。但是,对于 gradle 管理的依赖项,该选项不可用。
有人知道 gradle/buildship 的实现方式吗?我的依赖项不在存储库中,所以我现在只能使用 compile files
。
在与 src 或您构建脚本相同的目录级别上使用名为 lib 或类似的额外文件夹。
dependencies {
//local file
compile files('lib/local-lib-sources.jar')
// others local or remote file
}
如果您想将 Buildship 与 Eclipse 一起使用,那么您就不走运了,因为 gradle 目前不支持它(参见 https://discuss.gradle.org/t/add-sources-manually-for-a-dependency-which-lacks-of-them/11456/8)。
如果您可以不使用 Buildship 并手动生成 Eclipse 点文件,您可以在 build.gradle:
中执行类似的操作
apply plugin: 'eclipse'
eclipse.classpath.file {
withXml {
xml ->
def node = xml.asNode()
node.classpathentry.forEach {
if(it.@kind == 'lib') {
def sourcePath = it.@path.replace('.jar', '-sources.jar')
if(file(sourcePath).exists()) {
it.@sourcepath = sourcePath
}
}
}
}
}
然后您将从命令行 运行 gradle eclipse
并使用 Import -> "Existing Projects into Workspace"
将项目导入 Eclipse
另一个(可能更好)选项是使用这样的平面文件存储库:
repositories {
flatDir {
dirs 'lib'
}
见https://docs.gradle.org/current/userguide/dependency_management.html#sec:flat_dir_resolver
然后您将像任何其他依赖项一样包含您的依赖项;在你的情况下:
compile ':local-lib'
这样 Buildship 将自动找到 -sources.jar
文件,因为 flatDir
大部分情况下就像一个常规存储库。
我的 Gradle / Buildship 项目中有一个 *.jar
文件,该文件位于 lib
文件夹中。我通过以下方式将其包含在我的 build.gradle
中:
compile files('libs/local-lib.jar')
我也有一个相应的local-lib-sources.jar
文件,我想附加到它。在 Eclipse 中,对于手动管理的依赖项,这是通过构建路径条目 ->
属性 ->
Java 源附件的上下文菜单进行的。但是,对于 gradle 管理的依赖项,该选项不可用。
有人知道 gradle/buildship 的实现方式吗?我的依赖项不在存储库中,所以我现在只能使用 compile files
。
在与 src 或您构建脚本相同的目录级别上使用名为 lib 或类似的额外文件夹。
dependencies {
//local file
compile files('lib/local-lib-sources.jar')
// others local or remote file
}
如果您想将 Buildship 与 Eclipse 一起使用,那么您就不走运了,因为 gradle 目前不支持它(参见 https://discuss.gradle.org/t/add-sources-manually-for-a-dependency-which-lacks-of-them/11456/8)。
如果您可以不使用 Buildship 并手动生成 Eclipse 点文件,您可以在 build.gradle:
中执行类似的操作apply plugin: 'eclipse'
eclipse.classpath.file {
withXml {
xml ->
def node = xml.asNode()
node.classpathentry.forEach {
if(it.@kind == 'lib') {
def sourcePath = it.@path.replace('.jar', '-sources.jar')
if(file(sourcePath).exists()) {
it.@sourcepath = sourcePath
}
}
}
}
}
然后您将从命令行 运行 gradle eclipse
并使用 Import -> "Existing Projects into Workspace"
另一个(可能更好)选项是使用这样的平面文件存储库:
repositories {
flatDir {
dirs 'lib'
}
见https://docs.gradle.org/current/userguide/dependency_management.html#sec:flat_dir_resolver
然后您将像任何其他依赖项一样包含您的依赖项;在你的情况下:
compile ':local-lib'
这样 Buildship 将自动找到 -sources.jar
文件,因为 flatDir
大部分情况下就像一个常规存储库。