Я пытаюсь переместить некоторые часто используемые модули в их собственный проект, чтобы их можно было загрузить в частный репозиторий и использовать в приложениях. В настоящее время все они находятся в одной многопроектной конфигурации, и все работает, как ожидалось. Я переместил их, и все, кажется, строит хорошо. Когда я использую их в качестве зависимостей в своих приложениях, я получаю сообщения об ошибках java.lang.module.FindException: Module X not found, required by COMMON-MODULE-Y
.
. У меня сложилось впечатление, что плагин java-library
позволяет моему приложению импортировать те вторичные зависимости, которые были необходимы для зависимостей. объявлено, и это не то, что происходит.
Как я могу упаковать мои обычно используемые модули, чтобы разрешить это ИЛИ, как я могу настроить свой проект, чтобы разрешить это? Я использую Java 11 для этого.
EDIT
По сути, я хочу, чтобы мои библиотеки были автономными, а приложения, использующие их, не включали в себя никаких дополнительных библиотек. .
Вот мой build.gradle
для модуля, на котором я получаю вышеуказанную ошибку.
plugins {
id 'java-library'
id 'idea'
}
if(project.hasProperty('javaVer') && javaVer == '8') {
sourceCompatibility = 1.8
targetCompatibility = 1.8
}
idea {
module {
inheritOutputDirs = true
}
}
def currentOS = org.gradle.internal.os.OperatingSystem.current()
def depPlatform
if (!project.hasProperty(('platform'))) {
if (currentOS.isWindows()) {
depPlatform = 'win'
} else if (currentOS.isLinux()) {
depPlatform = 'linux'
} else if (currentOS.isMacOsX()) {
depPlatform = 'mac'cd
}
}else {
depPlatform = project.getProperties().get("platform");
}
sourceSets.main {
java {
srcDir 'src/main/java' //assume that your source codes are inside this path
}
resources {
srcDirs = ['src/main/java', 'src/main/resources']
exclude "**/*.java"
}
}
ext.moduleName = 'license'
dependencies {
implementation project(':common')
implementation "org.openjfx:javafx-base:11.0.2:${depPlatform}"
implementation 'commons-io:commons-io:2.6'
implementation 'org.apache.commons:commons-lang3:3.7'
implementation 'com.google.code.gson:gson:2.8.2'
implementation 'com.github.purejavacomm:purejavacomm:1.0.1.RELEASE'
}
Вот build.gradle
для мультипроекта, в котором находится вышеупомянутый модуль.
subprojects {
afterEvaluate {
repositories {
mavenCentral()
jcenter()
}
compileJava {
if (project.hasProperty(('javaVer')) && javaVer == '8') {
excludes = ['**/module-info.java']
} else {
doFirst {
options.compilerArgs = [
'--module-path', classpath.asPath,
]
}
}
}
jar {
archiveFileName = project.name + '-' + (project.hasProperty(('releaseSpec')) ? project.releaseSpec : 'SNAPSHOT') + '.jar'
}
}
}