Перенос проекта maven в модули - игнорируйте module-info.java - PullRequest
0 голосов
/ 24 июня 2019

В настоящее время мы переходим к JPMS, настраивая module-info.java для всех модулей в многомодульном проекте maven.

Для нас было бы идеально, если бы module-info.java уже находился в ветке "dev", но не влиял на какие-либо сборки. Поэтому идея состоит в том, чтобы исключить module-info.java по умолчанию и включать его только в определенные профили maven.

Имеет ли это смысл?

В любом случае, у меня не работает, модуль-info.java поднят, хотя в разделе исключений, как указано ниже:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>${version.maven-compiler-plugin}</version>
    <configuration>
        <source>${maven.compiler.source}</source>
        <target>${maven.compiler.target}</target>
        <release>${maven.compiler.release}</release>
        <compilerArgs>
            <arg>-Xlint:${maven.compiler.warningsToIgnore}</arg>
        </compilerArgs>
        <excludes>
            <exclude>**/module-info.java</exclude>
        </excludes>
    </configuration>
</plugin>

Есть идеи?

PS: Идея взята из Как исключить module-info.java в Netbeans (11)?

1 Ответ

0 голосов
/ 26 июня 2019

Тем не менее интересно, что фильтр не работает для module-info.java, но, глядя на источник плагина компилятора, я думаю, что это именно так:

https://github.com/apache/maven-compiler-plugin/blob/master/src/main/java/org/apache/maven/plugin/compiler/CompilerMojo.java

    protected void preparePaths( Set<File> sourceFiles )
    {
        //assert compilePath != null;

        File moduleDescriptorPath = null;

        boolean hasModuleDescriptor = false;
        for ( File sourceFile : sourceFiles )
        {
            if ( "module-info.java".equals( sourceFile.getName() ) )
            {
                moduleDescriptorPath = sourceFile;
                hasModuleDescriptor = true;
                break;
            }
}
...