从ant / jar版本迁移旧项目时,请帮助解决Maven混乱

时间:2014-01-30 09:22:58

标签: java eclipse maven

我知道这是一个经常出现的问题,但我尝试了之前的所有解决方案并在途中迷路了。

我们走了:

我有以下结构: 一个名为OB的旧系统,具有四个模块:核心,IO,匹配和GUI。 IO和匹配参考Core,GUI引用所有其余的。开发在Eclipse中完成,带有项目引用,ANT脚本将整个事件编译为4个jar和一个lib文件夹。

一个名为ORE的新系统引用了这4个罐子。并且有一个更大的lib文件夹,其中OB lib文件夹是子集。

我已经尝试了一个星期将这个东西变成了一个maven结构。 我会饶恕你所做的巨大混乱,我只想说我愿意接受具体的建议。

提前致谢,

托默

3 个答案:

答案 0 :(得分:1)

鉴于您也使用eclipse,并且需要一种很好的集成方法,我建议您将其设置为多模块构建,从根目录中的(最少)6个目录中进行布局:

- build
- core
- io
- matching
- ob
- ore

Build是构建它的主项目。从这里添加对所有模块的引用

<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/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <!-- The Basics -->
  <groupId>com.example</groupId>
  <artifactId>build</artifactId>
  <!-- Change Project version here. Do not use a property for this, Maven will complain -->
  <version>1.0-SNAPSHOT</version>

  <packaging>pom</packaging>
  <modules>
    <module>../core</module>
  </modules>
</pom>

Core和其他人可以将这个构建pom作为 parent 引用回来,但除非你在构建pom中有全局设置(例如编译器版本等),否则没有必要。

相反,每个项目可能都是个人的(但保持版本号相同)。鉴于核心是独立的,我可以告诉你io:

<project>
  <modelVersion>4.0.0</modelVersion>
  <!-- The Basics -->
  <groupId>com.example</groupId>
  <artifactId>io</artifactId>
  <version>1.0-SNAPSHOT</version>

  <packaging>jar</packaging>

  <!--Parent is optional but useful if you need global settings in the build pom -->
  <parent>
    <groupId>com.example</groupId>
    <artifactId>build</artifactId>
    <version>1.0-SNAPSHOT</version>
    <relativePath>../build/pom.xml</relativePath>
  </parent>


 <!-- Refer back to other projects easily -->
 <dependencies>
    <dependency>
      <groupId>com.example</groupId>
      <artifactId>core</artifactId>
      <version>${project.version}</version>
    </dependency>
 </dependencies>

</project>

使用此设置,可以轻松导入eclipse(Import as Maven项目)。 我通常发现maven的轻微严格性质导致项目更好地对齐,所以最终我最终移动源和资源以更好地适应maven模型(惯例确实使pom文件更小)。

有时您可能会在此过程中定义更多模块,但这不会有问题。

您可以控制构建目录中的所有模块,例如

mvn clean install
mvn versions:set -DnewVersion=2.1.16.GA -DgenerateBackupPoms=false
mvn sonar:sonar

或者你喜欢的任何东西。

答案 1 :(得分:0)

您可以修改maven使用的源目录,通过异常对其进行配置。

Maven网站上有一个简短的教程here

我之前没有从Ant迁移到Maven,但我已经向其他许多开发人员提出过这样做的建议。这是正常情况。

答案 2 :(得分:0)

您需要做的就是将所有引用放在相应的pom.xml中。 -IO和匹配的pom将具有Core的依赖性。 喜欢

<dependency>
<groupId>com.core</groupId>
<artifactId>core</artifactId>
<version>1.0</version>
</dependency>

其他模块也是如此。您可以在pom.xml中定义modules。如果我正确理解你的问题,它应该适合你。