使用多个源文件夹(作为将大型Java项目转换为Maven的中间步骤)

Mik*_*ike 4 java m2eclipse maven

我正在转换一个大型Java项目来使用maven.我有很多相互依赖的工作,但我想在我做真正的清理工作之前用maven来实现它.我把它分成几个模块和一个巨大的模块; 让我们称之为模块整体.Monolith有常规的Java类和一些gwt类(具有相互依赖性).我将这两个部分分开,得到一个像这样的目录结构:

./src/main/java/...
./src/client/gwt/...

所以,我可以很容易地用m2eclipse在eclipse中编译它,但是我似乎无法找到如何用maven编译它.我看到pom文件有一个构建部分,您可以在其中指定备用源和目标,但我认为它不是pom中的可重复属性:

<build>
    <sourceDirectory>${basedir}/src/main/java</sourceDirectory>
</build>
Run Code Online (Sandbox Code Playgroud)

在eclipse中,我可以调整项目的.classpath文件(在项目属性中)以添加其他源文件(和输出目录)来完成我想要做的事情.

有没有办法做到这一点,或者我是否需要首先解决依赖关系,并分成单独的模块?

Coo*_*ans 5

你所拥有的是一个maven多模块项目.在maven书上看一下这个教程.

所以,我可以很容易地用m2eclipse在eclipse中编译它,但是我似乎无法找到如何用maven编译它.

- 我不确定你的意思.M2Eclipse插件使用maven来构建你的模块.也许你可以澄清这一节.希望教程链接可以帮助您.


cro*_*wne 5

如果你与maven对抗,那将是一场艰苦的战斗.
Maven并不倾向于多个主要源目录,它们在maven环境中作为单独的模块会做得更好.
我看过一些maven gwt项目和原型,但似乎没有人采用你建议的方法.
看看Hupa使用的源代码结构,还可以看看Ham and Eggs博客中的原型

这些也适用于App Engine.

如果你真的需要将你的java服务器源与你的gwt客户端源分开,那么monolith需要分成更多的模块.
通常看到具有包结构的gwt项目如下:

com.company.project
                   .client
                   .server
                   .shared
Run Code Online (Sandbox Code Playgroud)

然后在gwt.xml中指定源路径以包含客户端和共享