使用Maven构建多模块项目
一般的web项目构成:
建立解决方案目录parent
首先使用命令进入到我们需要建立maven项目的目录:
mvn archetype:generate -DgroupId=com.lsk.mavenProject -DartifactId=parent -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
在 D:\java\test\下出现parent,进入,将src文件夹删除,然后修改pom.xml文件:将<packaging>jar</packaging>修改为<packaging>pom</packaging>,pom表示它是一个被继承的模块。
如果命令一直停留在:[INFO] Generating project in Batch mode
,请参考:maven(二)
创建domain、dao、service层
进入到新创建的parent,创建domian模块:
创建成功后,修改domain目录中的pom.xml文件,把<groupId>com.lsk.maven</groupId>和<version>1.0-SNAPSHOT</version>去掉,加上<packaging>jar</packaging>,因为groupId和version会继承system-parent中的groupId和version,packaging设置打包方式为jar:
<?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.lsk.maven</groupId> <artifactId>parent</artifactId> <version>1.0-SNAPSHOT</version> </parent> <artifactId>domain</artifactId> <packaging>jar</packaging> <name>domain</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> </project>
创建dao模块,方法和上面一样:
创建好后,修改dao目录中的pom.xml文件,修改和domain的一样的方式,不过,需要添加对system-domain模块的依赖,修改后的内容如下:
<?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.lsk.maven</groupId> <artifactId>parent</artifactId> <version>1.0-SNAPSHOT</version> </parent> <artifactId>dao</artifactId> <packaging>jar</packaging> <name>dao</name> <url>http://maven.apache.org</url> <dependencies> <!--dao需要使用到domain中的类,所以需要添加对domain模块的依赖--> <dependency> <groupId>com.lsk.maven</groupId> <artifactId>domain</artifactId> <version>${project.version}</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> </project>
创建service:
创建方式和pom.xml修改方式,和上面的一样,不过注意,这次要添加对dao模块的引用,那我们还要不要添加对domain模块的引用呢?不需要,因为虽然service依赖dao和domain,因为dao已经依赖了system-domain,我们只添加对dao的引用就可以啦。
创建web
创建web,命令和上面的模块的创建方法不太一样:
mvn archetype:generate -DgroupId=com.lsk.maven -DartifactId=web -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false
修改web下的pom.xml文件,并添加对service的引用,和上面的修改方式一样,但是,注意,web项目的打包方式是war!!!!
项目层级结果及运行
现在看parent下的pom.xml
如何运行呢?最后运行的肯定是web,我们可以给他装个jetty插件,修改web下的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.lsk.maven</groupId> <artifactId>parent</artifactId> <version>1.0-SNAPSHOT</version> </parent> <artifactId>web</artifactId> <packaging>war</packaging> <name>web Maven Webapp</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>com.lsk.maven</groupId> <artifactId>service</artifactId> <version>${project.version}</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> <build> <finalName>web</finalName> <plugins> <!--配置Jetty插件--> <plugin> <groupId>org.mortbay.jetty</groupId> <artifactId>maven-jetty-plugin</artifactId> </plugin> </plugins> </build> </project>
我们执行:mvn clean install命令:
进入web目录,启动jetty:
mvn jetty:run
浏览器访问:
可以使用Ctrl+c停止jetty。
导入到Eclipse