2014-04-30 61 views
1

我是Maven的新手,我们将基于ant的项目转换为Maven项目。每件事情都很好。另外我们需要明智地编译源代码包。为了更清楚起见,我们在src/main/java文件夹中有三个包,分别是dao,svc和controller。我想首先编译dao,然后通过给dao引用编译svc,类似地通过仅给出svc的引用来编译控制器,但不是dao。使用Maven进行封装编译?

最终目标是确保控制器不使用任何dao类,它们只能使用svc类。如果这种情况失败,Maven构建必须失败。

请建议。

+0

分割刀/ SVC /控制器为多个行家项目和相应地设置的依赖关系。 –

+0

实现此目的的最简单方法是将项目拆分为三个(并且没有控制器导入dao)。 – Thilo

回答

3

这听起来像你需要一个multi-module maven project。创建一个父项目,其任务只是聚合你的三个模块并提供一个构建。为每个包创建一个模块,然后定义各个POM文件中这些模块之间的依赖关系。

Maven构建系统足够聪明,可以根据您声明的依赖关系知道构建模块的顺序。如果您没有定义依赖关系(例如,在控制器和dao之间),则控制器模块无法访问dao模块中的类。

最终源布局将是这样的:

your-project 
your-project/pom.xml <--- parent POM 

your-project/dao 
your-project/dao/pom.xml 
your-project/dao/src/main/... 

your-project/svc 
your-project/svc/pom.xml 
your-project/svc/src/main/... 

your-project/controller 
your-project/controller/pom.xml 
your-project/controller/src/main/... 
+0

谢谢。我认为这可能有效。但可能无法将现有项目(已在生产中)划分为模块。如果可能的话,你能否详细说明一下。如何在svc中提供dao的参考? – Srikanth

+0

@sree要提供参考,请在您的SVC pom中包含一个指向您的DAO工件的“”条目。这听起来像你需要做一些关于Maven的背景阅读 - 这不是非常复杂,但是你不会在没有基础的基础上走得太远。 –

+0

谢谢邓肯。我做到了。最后,我有一个与svc&dao jars分开的战争文件。应用程序按预期工作。但是我们可以将所有子模块都编译为classes文件夹中的源文件,而不是将它们放在jar文件中吗? – Srikanth

0

为了更清楚一点,我们在src/main/java文件夹中有三个包,分别是dao,svc和controller。我想首先编译dao,然后通过给dao引用编译svc,类似地通过仅给出svc的引用来编译控制器,但不是dao。

根据您的要求判断,我想或多或少需要设置一个基于maven的多模块项目。看看这些链接

  1. Link 1
  2. Link 2
+0

谢谢。我现在不可能分开这个项目。 – Srikanth