在我的 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 来安装/打包和部署战争,我不能再使用这个相对路径。我想很简单,我只是在调用 maven 时传递输入文件的位置,例如:
mvn clean package -Dlangdir=C:/somedir
然后像这样改变pom:
<argument>${langdir}/PMLanguage.xls</argument>
然而,这个参数在这里被忽略了。主类作为参数接收的路径变为null/PMLanguage.xls。参数本身在 maven 中可用,我在 antrun 插件中使用 echo 成功测试。回响了正确的路径。
无论您在 pom 中的何处引用它们,您传递给 maven 的参数是否默认不可用?
感谢您的帮助,
Stijn