从现有项目创建父Maven项目

时间:2014-06-11 12:35:39

标签: java eclipse maven pom.xml

我有两个maven项目,我希望在构建到一个项目后将它们组合在一起。 我没有明智地创建这些项目,这两个项目是单独的maven项目。 以下是现有项目中的POM xml代码部分。

Project One pom.xml

<groupId>com.olex</groupId>
<artifactId>olex-reg</artifactId>
<version>1.0</version>
<packaging>war</packaging>

Project 2 pom.xml

<groupId>com.olex</groupId>
<artifactId>olex-qba</artifactId>
<version>1.0</version>
<packaging>war</packaging>

合并项目 pom.xml

<groupId>com.olex</groupId>
<artifactId>olex-war</artifactId>
<version>1.0</version>
<packaging>pom</packaging>

我想将这些项目合并为olex-war,一个完整的项目。 构建之后,我希望将所有代码复制到此olex-war项目中。 如果有人知道这种情况,请建议/提供提示。

提前致谢。

2 个答案:

答案 0 :(得分:2)

你可以从像这样的pom开始,将旧战争文件的所有内容提取到内容目录中。然后,您可以在新战争中打包该目录中的所有内容(web.xml和其他元数据除外)。

<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.olex</groupId>
  <artifactId>olex-war</artifactId>
  <packaging>war</packaging>
  <version>1.0</version>
  <name>olex-war Maven Webapp</name>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.10</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
  <build>
    <finalName>olex-war</finalName>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <executions>
                <execution>
                    <goals>
                        <goal>unpack</goal>
                    </goals>
                    <phase>generate-resources</phase>
                    <configuration>
                        <artifactItems>
                            <artifactItem>
                                <groupId>com.olex</groupId>
                                <artifactId>olex-qba</artifactId>
                                <version>${project.version}</version>
                                <packaging>war</packaging>
                            </artifactItem>
                            <artifactItem>
                                <groupId>com.olex</groupId>
                                <artifactId>olex-reg</artifactId>
                                <version>${project.version}</version>
                                <packaging>war</packaging>
                            </artifactItem>
                        </artifactItems>
                        <excludes>WEB-INF/web.xml</excludes>
                        <includes>**/*.class, **/*.jar, **/*.properties</includes>
                        <outputDirectory>${project.build.directory}/content</outputDirectory>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
  </build>
</project>

答案 1 :(得分:0)

您应该手动合并项目。许多元素(比如配置文件)无论如何都需要手动合并,你要避免意外地从一个项目中丢失一些东西,因为另一个项目会安静地覆盖它。

如果没有版本控制系统来帮助您进行合并,这将是一项令人费解的令人费解的任务。

首先设置版本控制系统(VCS)。它在许多其他情况下也会有所帮助。我推荐git,但是如果你已经有另一个已经启动并运行它应该做得很好,我不会在这里使用任何花哨的特价。

然后为新项目创建一个空文件夹,并将第一个项目中的所有数据复制到其中。根据您的需要执行所有替换(web.xml,pom.xml,其他配置文件)并将其提交给VCS。

这会将所有文件的这个版本写入VCS,你不能再将它们丢失,所以如果你碰巧弄错了,不用担心,只需将所有更改还原到这一点。

然后将第二个项目的内容复制到其上,覆盖重复的所有内容。

现在你可以使用&#34;显示差异&#34; VCS的功能,以查看您需要合并的内容。很可能你可以在图形工具中这样做,这样可以很容易。

他们中的大多数将是&#34;未知&#34;也就是说,VCS中不存在新文件。您很可能只需将它们添加到VCS中即可完成。 更有趣的是那些被修改过的&#34;。这意味着该文件已经存在,另一个项目也包含它们。您必须将它们合并为一个从现在起对您的新项目有效的组合版本。

完成后,您应该准备好新项目所需的所有文件(包括pom.xml)。将它们提交给VCS以便将来不会失去这种状态。