Как получить доступ к переменной с помощью плагина Groovy в Maven - PullRequest
0 голосов
/ 16 октября 2018

У меня есть приложение с React в дочернем модуле, и я хотел бы использовать node.exe, который существует в родительском модуле.

В Parent POM я определил переменную с путем пути node.exe

<properties>
    <project.name>Corretor Online</project.name>
    <nodeBase>C:/col/COL</nodeBase>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

Обс .: Я хотел бы использовать $ {project.basedir} в переменной nodeBase

И я пытаюсь получить доступ к этой переменной в дочернем POM, чтобы передать в качестве параметра в методе ProcessBuilder:

<plugin>
            <groupId>org.codehaus.groovy.maven</groupId>
            <artifactId>gmaven-plugin</artifactId>
            <executions>
                <execution>
                    <id>webpack</id>
                    <phase>process-resources</phase>
                    <goals>
                        <goal>execute</goal>
                    </goals>
                    <configuration>
                        <source><![CDATA[
                                println "Compiling client code..."
                                def webpack = new ProcessBuilder(["" + nodeBase + "/node/node", "" + nodeBase + "/node_modules/webpack/bin/webpack.js", "-p", "&#45;&#45;progress", "&#45;&#45;bail"]).inheritIO().directory(project.getBasedir())
                                def env = webpack.environment()
                                env.put("WAR_NAME", project.build.finalName)
                                def proc_webpack = webpack.start()
                                proc_webpack.waitForOrKill(120000)
                                if(proc_webpack.exitValue() != 0)
                                    throw new org.apache.maven.plugin.MojoFailureException("Error compiling client code")
                            ]]></source>
                    </configuration>
                </execution>
            </executions>
        </plugin>

Но я получаю эту ошибку:

[ОШИБКА] Не удалось выполнить цель org.codehaus.groovy.maven: gmaven-plugin: 1.0: execute (webpack)в проекте col-backoffice-war: groovy.lang.MissingPropertyException: такого свойства нет: nodeBase для класса: script1539714060887 -> [Help 1]

И если я изменю значение с «nodeBase» на «$ {nodeBase}, я получаю эту ошибку:

[ОШИБКА] Не удалось выполнить цель org.codehaus.groovy.maven: gmaven-plugin: 1.0: execute (webpack) в проекте col-backoffice-war:Ошибка запуска, script1539714572018.groovy: 2: неожиданный символ: '#' @ строка 2, столбец134.

Однако, если я поставлю буквальный путь, я смогу построить.

def webpack = new ProcessBuilder(["C:/col/COL/node/node", 
"C:/col/COL/node_modules/webpack/bin/webpack.js", "-p", 
"&#45;&#45;progress", 
"&#45;&#45;bail"]).inheritIO().directory(project.getBasedir())

Я не смог найти решение для этого, можете ли вы помочь с тем, как я могуполучить доступ к этой переменной?

Большое спасибо!

1 Ответ

0 голосов
/ 17 октября 2018

Я обнаружил проблему.

Необходимо поставить параметр в кавычки, как в примере ниже.

    def webpack = new ProcessBuilder("${nodeBase}" + "/node/node", "C:/col/COL/node_modules/webpack/bin/webpack.js", "-p", "&#45;&#45;progress", "&#45;&#45;bail"]).inheritIO().directory(project.getBasedir())
...