[java] build.gradle 파일에 로컬 .jar 파일 종속을 추가하는 방법?

따라서 로컬 .jar 파일 종속성을 build.gradle 파일에 추가하려고했습니다.

apply plugin: 'java'

sourceSets {
    main {
        java {
            srcDir 'src/model'
        }
    }
}

dependencies {
    runtime files('libs/mnist-tools.jar', 'libs/gson-2.2.4.jar')
    runtime fileTree(dir: 'libs', include: '*.jar')
} 

그리고 당신은 여기에서 referenceLibraries 폴더에 .jar 파일을 추가 한 것을 볼 수 있습니다 : https://github.com/WalnutiQ/wAlnut/tree/version-2.3.1/referencedLibraries

그러나 문제는 내가 명령을 실행할 때 : 명령 줄에 gradle build 다음과 같은 오류가 발생한다는 것입니다.

error: package com.google.gson does not exist
import com.google.gson.Gson;

여기 내 전체 저장소가 있습니다 : https://github.com/WalnutiQ/wAlnut/tree/version-2.3.1



답변

로컬 디렉토리에서 해당 .jar을 가져와야하는 경우

모듈 gradle 옆에 추가하십시오 (앱 gradle 파일이 아님).

repositories {
   flatDir {
       dirs 'libs'
   }
}


dependencies {
   implementation name: 'gson-2.2.4'
}

그러나 실제 maven 저장소의 표준 .jar이기 때문에 이것을 시도하지 않겠습니까?

repositories {
   mavenCentral()
}
dependencies {
   implementation 'com.google.code.gson:gson:2.2.4'
}


답변

documentation 에 따르면 다음과 같이 로컬 jar 종속성에 대한 상대 경로를 사용하십시오.

dependencies {
    implementation files('libs/something_local.jar')
}


답변

로컬 저장소의 모든 JAR을 포함하는이 작업을 수행 할 수도 있습니다. 이렇게하면 매번 지정할 필요가 없습니다.

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


답변

다음은 나를 위해 작동합니다.

compile fileTree(dir: 'libs', include: '*.jar')

Gradle 설명서를 참조하십시오 .


답변

Gradle에 대해 로컬 Maven 저장소를 재사용 할 수 있습니다.

  • jar을 로컬 Maven 저장소에 설치하십시오.

    mvn install:install-file -Dfile=utility.jar -DgroupId=com.company -DartifactId=utility -Dversion=0.0.1 -Dpackaging=jar

  • jar이 ~/.m2/로컬 Maven 저장소에 설치되어 있는지 확인하십시오.

  • build.gradle파일 에서 로컬 Maven 저장소를 활성화하십시오 .

    repositories {
      mavenCentral()
      mavenLocal()
    }
    
    dependencies {
      implementation ("com.company:utility:0.0.1")
    }
    • 이제 프로젝트에서 jar을 구현할 수 있어야합니다.

답변

받아 들일만한 대답은 좋지만 동일한 타사 Java 라이브러리를 사용하려면 다중 프로젝트 Gradle 빌드 내에 다양한 라이브러리 구성이 필요했을 것입니다.

내 ‘ allprojects ‘클로저 내 ‘ dir ‘경로 요소에 ‘ $ rootProject.projectDir ‘을 추가하면 각 하위 프로젝트가 동일한 ‘ libs ‘디렉토리를 참조하고 해당 하위 프로젝트의 로컬 버전이 아닌 것을 의미합니다 .

//gradle.build snippet
allprojects {
    ...

    repositories {
        //All sub-projects will now refer to the same 'libs' directory
        flatDir {
            dirs "$rootProject.projectDir/libs"
        }
        mavenCentral()
    }

    ...
}

퀴즈 편집 : “$ {rootProject.projectDir}”을 “$ rootProject.projectDir”(최신 Gradle 버전에서 작동)로 변경했습니다.


답변

이를 수행하는 간단한 방법은

compile fileTree(include: ['*.jar'], dir: 'libs')

App의 libs 디렉토리에있는 모든 .jar 파일을 컴파일합니다.