Maven Enforcer: как получить доступ к свойствам maven из правила beanshell - PullRequest
1 голос
/ 05 августа 2020

Я успешно создал правило calculateBeanshell с плагином maven-enforcer-plugin, который сканирует файлы в рабочей области на предмет распространенных ошибок.

С жестко заданным путем правило работает нормально. Когда я хочу использовать переменную $ {project.basedir} из окружающего pom, скрипт прерывается на моей Windows машине.

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>${maven-enforcer-plugin.version}</version>
<executions>
    <execution>
        <id>enforce-banned-dependencies</id>
        <inherited>true</inherited>
        <goals>
            <goal>enforce</goal>
        </goals>
        <configuration>
            <rules>
                <evaluateBeanshell>
                    <condition>
                        import scanner.MyScanner;
                        scanner = new MyScanner();

                        //hack to read root dir
                        //project.basedir  crashes beanshell with its backslashes
                        rootPath = new File("");
                        root = new File(rootPath.getAbsolutePath());
                        print("Scanning in: " + root);
                        print("${project.artifactId}"); // works fine
                        print("${project.basedir}");    // breaks the code
                        
                        scanner.loopThroughProjects(root);

                        return everythingIsFine;
                    </condition>
                </evaluateBeanshell>
            </rules>
            <fail>true</fail>
        </configuration>
    </execution>
</executions>                           

В отладочном выводе строка:

print("${project.basedir}");

был заменен на:

print("D:\code\my-maven-project");

Есть ли другое свойство maven с очищенными косыми чертами или есть другой способ доступа к $ {project.basedir}? Хак, описанный в примере кода, работает, но мне не нравятся хаки, которые заставляют меня оставлять комментарии.

...