[英]Use local jar as a dependency in my Gradle Java project
我有一个名为mylib.jar
的本地 jar 文件。 我想在我的 Gradle Java 项目中将其用作依赖项。
这是我尝试过的:
我在项目根目录下创建了一个libs/
文件夹。 我将 jar 文件放在libs/
文件夹下。
MyProject
->libs/mylib.jar
->build.gradle
->src/...
在我的 build.gradle 中:
apply plugin: 'java-library'
group 'com.my.app'
version '1.0-SNAPSHOT'
sourceCompatibility = 1.8
repositories {
mavenCentral()
flatDir {
dirs 'libs'
}
}
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.12'
api files('libs/mylib.jar')
}
但是我无法在我的项目代码中访问mylib.jar
中定义的公共类。 为什么?
===== 更多信息 =====
我的jar的内容:
mylib.jar
> com.my.jar.package
>ClassFromJar.class
以下是我使用 jar 的方法:
// Compilation error: Cannot resolve symobl 'ClassFromJar'
import com.my.jar.package.ClassFromJar;
public class MyEntryPoint {
// Compilation error: Cannot resolve symbol 'ClassFromJar'
ClassFromJar instance = new ClassFromJar();
}
在您的模块 gradle 旁边添加(不是应用程序 gradle 文件):
repositories { flatDir { dirs 'libs' } }
dependencies { implementation files('libs/mylib.jar') }
compile fileTree
:compile fileTree(dir: 'libs', include: 'mylib.jar')
我认为你应该在依赖声明中使用compile name: 'mylib'
在这种情况下flatDir
将搜索 mylib.jar。
您可以尝试关注 build.gradle (它适用于我的项目):
plugins {
id 'java'
}
apply plugin: 'java-library'
group 'dependency'
version '1.0-SNAPSHOT'
sourceCompatibility = 1.8
repositories {
mavenCentral()
flatDir {
dirs 'libs'
}
}
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.12'
compile name: 'mylib'
}
只有*.aar
需要flatDir
存储库(它是 Android 特定的库格式,与给定的上下文完全无关)。 implementation
和api
影响可见性,但这些也是 Android DSL 特定的)。 在一个常见的 Java 模块中,可以这样引用:
dependencies {
compile fileTree(include: ["*.jar"], dir: "libs")
}
并确保将*.jar
放入模块内正确的libs
目录中。
以防万一:
1 - 编译器必须有权访问 lib 目录和 jar 示例:
javac -cp .;lib\* *.java
2 - 还必须在 java 的 java 文件示例中提及导入
import static org.lwjgl.glfw.GLFW.*;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.