Как запретить Gradle удалять мои модули как потерянные модули в intellij после каждого импорта - PullRequest
1 голос
/ 09 апреля 2020

У нас есть проект 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 выглядят так:

enter image description here

Я протестировал, чтобы проверить опцию 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"]
            }
        }
    }


}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...