У нас есть проект java с несколькими проектами Gradle. Проект большой и у нас много модулей. У нас есть наши IML файлы под контролем версий.
Среда работает, пока мы не изменим что-либо в файлах Gradle и не импортируем Gradle. Затем он удалит все наши файлы IML. Иногда он помещает их непосредственно в Локально удаленные файлы, но иногда он просит нас удалить потерянные модули, и мы можем восстановить их, если захотим. В то же время он создает новые файлы IML. Наши имена файлов iml имеют только одно слово в качестве имени, но Gradle создает файлы iml с полным путем к модулю, как это имя проектаName.subfolder.module.
Мы сохранили много runConfiguration в project.ipr, для которого требуется правильное имя модуля, так они работают. Я однажды попытался удалить все наши файлы iml и позволить gradle создавать файлы iml, и я изменил нашу runConfiguration в файле ipr, чтобы использовать имена файлов iml, созданные gradle. Затем в следующий раз при импорте gradle удалите все сгенерированные им файлы и добавьте имя каталога root в начале файлов iml. Таким образом, если имя файла iml, созданное им в первый раз, было projectname.subdirectory.modulename, это создало новые файлы iml с этим именем rootDirectory.projectname.subdirectory.modulename. И когда я изменил имена модулей в имени конфигурации запуска на новое имя, то при повторном импорте gradle он удалил rootDirectory из имени файлов iml.
Мой вопрос: есть ли способ настроить gradle, чтобы он не создавал новые модули? Если нет, то есть способ передать имена файлов iml в gradle или заставить его указать c имен, которые не изменяются.
Мы используем последнюю версию Intellij 2020.1, и у нас есть упаковщик gradle с gradle-6.0 0,1. Наши настройки gradle в intellij выглядят так:
Я протестировал, чтобы проверить опцию Generate * iml files и снять ее. Но нет никаких отличий, он работает одинаково. Определение исходных наборов выглядит следующим образом в основном build.gradle для всего проекта:
subprojects {
apply plugin: 'java'
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
repositories {
mavenCentral()
}
test {
useJUnitPlatform()
}
dependencies {
testImplementation 'junit:junit:4.12'
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.4.2'
testImplementation 'org.junit.platform:junit-platform-runner:1.4.2'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.4.2'
testRuntimeOnly 'org.junit.vintage:junit-vintage-engine:5.4.2'
testImplementation 'org.hamcrest:hamcrest-library:1.3'
}
configurations {
runtimeLibraries
}
sourceSets {
main {
java {
srcDirs = ["src"]
}
resources {
srcDirs = ["resources"]
}
}
test {
java {
srcDirs = ["test/src"]
}
resources {
srcDirs = ["test/resources"]
}
}
}
}