web-dev-qa-db-ja.com

Gradleの依存関係としてローカルjarを使用するJavaプロジェクト

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で定義されているパブリッククラスにアクセスできません。どうして?

=====詳細情報=====

私の瓶の内容:

mylib.jar
    > com.my.jar.package
      >ClassFromJar.class

ここに私が瓶を使用する方法があります:

// 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();
}
11
Leem.fin

同様の回答が示唆しています

  1. ローカルディレクトリ

モジュールのgradleの横に追加します(アプリのgradleファイルではありません):

repositories {
   flatDir {
       dirs 'libs'
   }
}
  1. 相対パス:
dependencies {
    implementation files('libs/mylib.jar')
}
  1. 使用する compile fileTree
compile fileTree(dir: 'libs', include: 'mylib.jar')
5
user7294900

flatDirリポジトリは*.aarにのみ必要です(これはAndroid特定のライブラリ形式であり、指定されたコンテキストとは完全に無関係です)implementationおよびapiは可視性に影響しますが、これらもAndroid DSL固有)です。一般的なJavaモジュールでは、次のように参照できます:

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

そして、モジュール内の*.jarを正しい1つのlibsディレクトリにドロップしてください。

1
Martin Zeitler

依存関係宣言で使うべきだと思います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'
}
0
i.bondarenko

念のため:

1-コンパイラはlibディレクトリとjarの例にアクセスできる必要があります。

javac -cp .;lib\* *.Java

2-Javaファイルの例Java add

import static org.lwjgl.glfw.GLFW.*;
0
Chronoslog