1.首先建一个maven项目
mvn archetype:create -DgroupId=com.emailsys -DartifactId=platform
修改pom文件,将<package>改为<packaging>pom</packaging>
接着删除src文件
2.创建子模块
mvn archetype:create -DgroupId=com.emailsys -DartifactId=entity
可以看见platform文件夹下的pom文件中多了一个:
<modules>
<module>entity</module>
</modules>
这表示这个里面有模块entity,模块创建成功;
同样的,可以创建:
mvn archetype:create -DgroupId=com.emailsys -DartifactId=service
.................................................................................................uitl
最后mvn eclipse:eclipse
注意:为了防止依赖的包出现问题,一般都用
dependencyManagement
Maven 使用dependencyManagement 元素来提供了一种管理依赖版本号的方式。通常会在一个组织或者项目的最顶层的父POM 中看到dependencyManagement 元素。使用pom.xml 中的dependencyManagement 元素能让所有在子项目中引用一个依赖而不用显式的列出版本号。Maven 会沿着父子层次向上走,直到找到一个拥有dependencyManagement 元素的项目,然后它就会使用在这个dependencyManagement 元素中指定的版本号。
例如在父项目里:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.2</version>
</dependency>
...
<dependencies>
</dependencyManagement>
然后在子项目里就可以添加mysql-connector时可以不指定版本号,例如:
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
</dependencies>
相对于dependencyManagement,所有声明在dependencies里的依赖都会自动引入,并默认被所有的子项目继承。
pluginManagement
是一个道理
另外就是依赖,其实可以依赖,项目和项目之间的依赖。比如controller依赖entity。
这时就可以用maven进行操作。
如:
controller的pom.xml
<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.emailsys</groupId>
<artifactId>platform2</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<groupId>com.emailsys</groupId>
<artifactId>controller</artifactId>
<version>1.0-SNAPSHOT</version>
<name>controller</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>com.emailsys</groupId>
<artifactId>entity</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
看dependency
依赖entity。
再看controller中引用:
注意,controller中是没有user这个模型的。
而entity中才有。
这时controller中的代码:
public static void main(String[] args) {
// TODO Auto-generated method stub
User user = new User();
user.setName("xiaoming");
System.out.println(user.getName());
}
运行起来没有问题。这就是依赖的好处。