您将遇到的问题是 Eclipse 中的项目不一定存储在工作区目录中;它们可以在文件系统上的任何位置。这意味着仅仅知道工作区的位置不一定能帮助您找到批处理文件。
例如:我的工作区是$HOME/workspace
,但我所有的项目(工作副本)都在$HOME/code/project
. 能够确定工作空间并不是很有帮助。项目可以存在于工作区之外,并且仍然可以使用File -> Import出现在 Eclipse 中。
您最好的选择可能是使用build-helper-maven-plugin的attach-artifact目标将批处理文件“附加”到构建中。这里有一个如何做到这一点的例子。
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<id>attach-artifacts</id>
<phase>package</phase>
<goals>
<goal>attach-artifact</goal>
</goals>
<configuration>
<artifacts>
<artifact>
<file>script.bat</file>
<type>bat</type>
</artifact>
</artifacts>
</configuration>
</execution>
</executions>
</plugin>
然后,您的其他项目可以使用 maven-dependency-plugin 的复制目标将脚本解析到自己的目录中并从那里运行它。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.5.1</version>
<executions>
<execution>
<id>copy</id>
<phase>package</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>...</groupId>
<artifactId>...</artifactId>
<version>...</version>
<type>bat</type>
<overWrite>true</overWrite>
</artifactItem>
</artifactItems>
<outputDirectory>${project.build.directory}/scripts</outputDirectory>
<overWriteSnapshots>true</overWriteSnapshots>
</configuration>
</execution>
</executions>
</plugin>