gpt4 book ai didi

maven-2 - Maven - 传递参数以在 exec-maven-plugin 中使用

转载 作者:行者123 更新时间:2023-12-04 16:56:23 27 4
gpt4 key购买 nike

在我的 pom 中,我添加了 exec-maven-plugin 来调用将生成文件的 java 类。此类需要将一些参数传递给 main 方法,其中之一是输入文件的位置(项目外部)。到目前为止,我一直在为此使用相对路径,它工作正常:

        <plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<executions>
<execution>
<phase>test</phase>
<goals>
<goal>java</goal>
</goals>
</execution>
</executions>
<configuration>
<mainClass>com.laco.projectmaster.util.LanguageGenerator</mainClass>
<arguments>
<argument>../PM-Config/dev/PMLanguage.xls</argument>
<argument>PM4.0</argument>
<argument>${project.build.outputDirectory}/com/laco/projectmaster/props/resources</argument>
<argument>ProjectMaster</argument>
<argument>Created during maven build (POM Version: ${pom.version})</argument>
</arguments>
</configuration>
</plugin>

现在我开始使用 hudson 来安装/打包和部署 war ,我不能再使用这个相对路径了。我想很简单,我只是在调用 maven 时传递输入文件的位置,例如:

mvn clean package -Dlangdir=C:/somedir

然后像这样改变pom:
<argument>${langdir}/PMLanguage.xls</argument>

然而,这个参数在这里被忽略了。主类作为参数接收的路径变为 null/PMLanguage.xls 。参数本身在 maven 中可用,我使用 antrun 插件中的 echo 进行了成功测试。正确的路径得到了回应。

无论您在 pom 中的何处引用它们,您传递给 maven 的参数是否默认都不可用?

谢谢你的帮助,
斯蒂恩

最佳答案

我无法重现该问题。我使用了以下测试类:

package com.stackoverflow.q3421918;

public class Hello
{
public static void main( String[] args )
{
System.out.println( args[0] + " " + args[1] );
}
}

以及以下 pom.xml:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.stackoverflow.q3421918</groupId>
<artifactId>Q3421918</artifactId>
<version>1.0-SNAPSHOT</version>

<!-- this was a test for a workaround -->
<properties>
<myprop>${langdir}</myprop>
</properties>

<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2</version>
<executions>
<execution>
<phase>test</phase>
<goals>
<goal>java</goal>
</goals>
</execution>
</executions>
<configuration>
<mainClass>com.stackoverflow.q3421918.Hello</mainClass>
<arguments>
<argument>${myprop}</argument>
<argument>${langdir}</argument>
</arguments>
</configuration>
</plugin>
</plugins>
</build>
</project>

这是我得到的输出:

$ mvn clean package -Dlangdir=C:/somedir
[信息] 正在扫描项目...
[信息] ----------------------------------------------- -------------------------
[INFO]楼Q3421918
[信息] 任务段:[清洁,包]
[信息] ----------------------------------------------- -------------------------
...
[信息] 准备 exec:java
[警告] 从 fork 生命周期中删除:java,以防止递归调用。
[信息] 项目不需要目标 - 跳过
[信息] [exec:java {execution: default}]
你好 c:/somedir c:/somedir
[信息] ----------------------------------------------- -------------------------
[信息] 构建成功
[信息] ----------------------------------------------- -------------------------
...

使用 Maven 2.2.1 测试。

关于maven-2 - Maven - 传递参数以在 exec-maven-plugin 中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3421918/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com