在我的 Gradle Java 项目中使用本地 jar 作为依赖项

2022-09-02 22:07:22

我有一个名为 的本地 jar 文件。我想在我的Gradle Java项目中使用它作为依赖项。mylib.jar

这是我尝试过的:

我在项目根目录下创建了一个文件夹。我把jar文件放在文件夹下。libs/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

===== 更多信息 =====

我的罐子里的东西:

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();
}

答案 1

类似的答案建议

  1. 本地目录

添加到模块 gradle 旁边(不是应用 gradle 文件):

repositories {
   flatDir {
       dirs 'libs'
   }
}
  1. 相对路径:
dependencies {
    implementation files('libs/mylib.jar')
}
  1. 用:compile fileTree
compile fileTree(dir: 'libs', include: 'mylib.jar')

答案 2

只有存储库是必需的(这是Android特定的库格式,与给定的上下文完全无关)。 并影响可见性,但这些也是Android DSL特有的)。在通用的Java模块中,可以像这样引用它:flatDir*.aarimplementationapi

dependencies {
    compile fileTree(include: ["*.jar"], dir: "libs")
}

并确保将 放到模块内的正确目录中。*.jarlibs


推荐