【问题标题】:How access a variable with Groovy Plugin in Maven如何在 Maven 中使用 Groovy 插件访问变量
【发布时间】:2018-10-17 05:51:47
【问题描述】:

我在子模块中有一个带有 React 的应用程序,我想使用父模块中存在的 node.exe。

在父 POM 中,我定义了一个带有 node.exe 路径的变量

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

Obs.:我想在 nodeBase 变量中使用 ${project.basedir}

我尝试在子 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>

但我收到此错误:

[错误] 无法在项目 col-backoffice-war 上执行目标 org.codehaus.groovy.maven:gmaven-plugin:1.0:execute (webpack):groovy.lang.MissingPropertyException:没有这样的属性:类的 nodeBase:脚本1539714060887 -> [帮助1]

如果我从“nodeBase”更改为“${nodeBase}”,我会收到此错误:

[错误] 无法在项目 col-backoffice-war 上执行目标 org.codehaus.groovy.maven:gmaven-plugin:1.0:execute (webpack):启动失败,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())

我找不到它的解决方案,您能否帮助我如何访问这个变量?

非常感谢!

【问题讨论】:

标签: reactjs maven groovy gmaven-plugin gmaven


【解决方案1】:

我发现了问题。

需要将参数放在引号中,如下例所示。

    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())

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-06
    • 2012-04-30
    • 2019-10-06
    • 1970-01-01
    • 2011-09-12
    • 2021-08-07
    相关资源
    最近更新 更多