在当前工作空间中构建所有Eclipse Maven项目的单个命令?

13

有人知道一种简单而有效的方法来构建当前工作区中所有Maven项目吗?例如,对于每个这样的项目,使用maven clean install。

例如,是否可以选择多个项目并使用类似于${project_loc}的东西或获取弹出窗口以选择可能在运行配置中使用的项目?还是有其他方法?

我正在使用Eclipse Juno。

2个回答

15

你可以为所有项目创建一个父级 pom.xml 文件,然后使用 mvn compile 命令来编译父级 pom.xml。

关于项目继承,请参见这里

如果你可以指定相对路径,那么这个过程应该不难。创建一个新的 Maven 项目,并使用类似下面的 pom.xml 文件:

<?xml version="1.0"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.    apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.example</groupId>
    <artifactId>parent-app</artifactId>
    <packaging>pom</packaging>
    <version>1</version>
    <modules>
        <module>../project1</module>
        <module>../project2</module>
    </modules>
</project>

从Eclipse工作区中删除项目(但不要删除文件系统中的项目),然后导入父级Maven项目。现在你可以:

运行为... > Maven Build > clean compile(作为目标)

这样应该会清理并编译所有项目。


1
这些项目完全没有关联。您建议我创建一个包含指定要包含在构建中的项目的pom的新项目吗?如果是这样,您有示例吗?这些项目已经继承了一个父pom,我“无法”编辑它。 - JLund
回答已编辑以提供更多信息。我刚看到你评论的最后一部分,关于父POM。子项目(project1和project2)不必将该POM标识为其父POM,但我仍然不确定这是否适用于您。不过可以试试看。 - davidfmatheson
如果我在不同的项目中需要不同的目标呢? - user7294900
对我来说运行得很好..尽管我是从终端启动了mvn package (y) - Vikash

2
由于启动配置始终与一个项目相关,因此没有办法通过纯Eclipse工具将多个项目放入启动配置中。 但是,有一些解决方法:
  • 使用parent.pom来创建一个新项目,其中包括所有现有项目(并在Maven中进行迭代)。
  • 真正为每个项目定义一个启动配置,然后使用CDT启动组EclipseRunner插件批量启动它们。
  • 使用Ant脚本遍历您的工作区目录,并使用Ant4Eclipse调用启动配置。

话虽如此,最好的选择是parent.pom,因为它是一种经过验证的方法,您可以在持续集成服务器上重复使用它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接