【Maven进阶二】多模块构建Maven项目-Dos命令实现

时间:2022-09-02 18:57:38

   上篇我们讲述的是在Eclipse环境下如何实现多层Maven创建的效果,本篇我们来讲述通过Dos窗口,如何使用命令来实现对MavenParent的创建。

 

   比如,我创建的项目路径在我的F盘的某文件夹中(F:\JDB\test),那么首先第一步是进入到该文件

方法一:直接通过cd的方式访问

方法二:进入到该文件夹内,然后点击Shift+鼠标右键,右键菜单会出现“在此处打开命令窗口”然后点击则会进入相对应的命令窗口,如图:

【Maven进阶二】多模块构建Maven项目-Dos命令实现

   在命令窗口中输入如下命令"mvn archetype:generate -DgroupId=me.gacl -DartifactId=exam-parent -DarchetypeArtifactId=maven-archetype-quickstart-DinteractiveMode=false

",然后回车,则会生成相对应的exam-parent,如下图:

【Maven进阶二】多模块构建Maven项目-Dos命令实现

   看我的文件夹,生成了exam-parent的父文件夹

【Maven进阶二】多模块构建Maven项目-Dos命令实现

   父文件夹生成,去掉无用的src文件,将pom文件夹中的<packaging></packaging>的值修改为pom,则exam-parent创建完成。

第二步开始创建分层项目,domain层,dao层,service层(exam-xx

domain层创建命令:mvn archetype:generate -DgroupId=me.gacl -DartifactId=exam-domain -DarchetypeArtifactId=maven-archetype-quickstart-DinteractiveMode=false

【Maven进阶二】多模块构建Maven项目-Dos命令实现

     创建完成之后,将pom.xml文件进行修改,将<groupId>me.gacl</groupId>, <version>1.0-SNAPSHOT</version>去掉,加入<packaging>jar</packaging>

最后的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>me.gacl</groupId>
<artifactId>exam-parent</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>exam-domain</artifactId>
<packaging>jar</packaging>
<name>exam-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层创建命令:mvn archetype:generate -DgroupId=me.gacl -DartifactId=exam-dao -DarchetypeArtifactId=maven-archetype-quickstart-DinteractiveMode=false

【Maven进阶二】多模块构建Maven项目-Dos命令实现

     创建完成之后,将pom.xml文件进行修改,将<groupId>me.gacl</groupId>, <version>1.0-SNAPSHOT</version>去掉,加入<packaging>jar</packaging>,同时加入对domain的依赖,最终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>me.gacl</groupId>
<artifactId>exam-parent</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>exam-dao</artifactId>
<packaging>jar</packaging>
<name>exam-dao</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>

<dependency>
<groupId>me.gacl</groupId>
<artifactId>exam-domain</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</project>

service层创建命令:mvn archetype:generate -DgroupId=me.gacl -DartifactId=exam-service -DarchetypeArtifactId=maven-archetype-quickstart-DinteractiveMode=false

【Maven进阶二】多模块构建Maven项目-Dos命令实现

     创建完成之后,将pom.xml文件进行修改,将<groupId>me.gacl</groupId>, <version>1.0-SNAPSHOT</version>去掉,加入<packaging>jar</packaging>,同时加入对dao层的依赖,最终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>me.gacl</groupId>
<artifactId>exam-parent</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>exam-service</artifactId>
<packaging>jar</packaging>
<name>exam-service</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<!-->
exam-service依赖exam-dao,exam-domain但是由于exam-dao已经依赖于exam-domain
所以我们只需要添加对exam-dao的依赖即可
-->
<dependency>
<groupId>me.gacl</groupId>
<artifactId>exam-dao</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</project>

第三步则是对web窗体的创建-举例exam-web

   通过一种方式进入到exam-parent文件夹下的命令窗体内,然后输入命令“mvn archetype:generate -DgroupId=me.gacl-DartifactId=exam-web -DarchetypeArtifactId=maven-archetype-quickstart-DinteractiveMode=false”,出现的效果:

【Maven进阶二】多模块构建Maven项目-Dos命令实现

   子窗体exam-web创建完成之后,查看parentpom文件,会发现多处如下代码:

<modules>
<module>exam-web</module>
</modules>

   对于web层,相比其他层有其特殊之处,因为会存在jsp页面,web.xml来实现作用。创建完成之后,文件夹会出现一个index.jsp:

【Maven进阶二】多模块构建Maven项目-Dos命令实现

将其打开,会发现如下内容:

<html>
<body>
<h2>Hello World!</h2>
</body>
</html>

   修改exam-web文件夹,将pom文件夹中的配置修改:将<groupId>me.gacl</groupId>,  <version>1.0-SNAPSHOT</version>去掉,加入<packaging>jar</packaging>.去掉的原因是因为前两者会通继承exam-parent中的groupId,version.最后加上对于service的依赖。修改之后的pom文件如下:

修改之后的pom文件如下:

<?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>me.gacl</groupId>
<artifactId>exam-parent</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>exam-web</artifactId>
<packaging>war</packaging>
<name>exam-web Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<!--
添加对exam-service的依赖
-->
<dependency>
<groupId>me.gacl</groupId>
<artifactId>exam-service</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
<build>
<finalName>exam-web</finalName>
</build>
</project>

     这样一个exam-web子模块就创建完工了,对于Web层来说,我们可以进行测试来测试咱们搭建的框架

最后一步,对exam-web进行测试

     对于测试,由于最终是运行的web层,所以我们需要在pom文件,加入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>me.gacl</groupId>
<artifactId>exam-parent</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>exam-web</artifactId>
<packaging>war</packaging>
<name>exam-web Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<!--
添加对exam-service的依赖
-->
<dependency>
<groupId>me.gacl</groupId>
<artifactId>exam-service</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
<build>
<finalName>exam-web</finalName>
<plugins>
<!--配置Jetty插件 -->
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
一切准备就绪,exam-parent文件下执行dos命令,mvn clean install

最后运行成功的效果:

【Maven进阶二】多模块构建Maven项目-Dos命令实现

运行成功之后,在exam-web目录下多出了target目录,里边存在exam-web.war,如图所示:

【Maven进阶二】多模块构建Maven项目-Dos命令实现

最后一步命令,在exam-web目录的dos窗口下,执行jetty操作:mvnjetty:run

【Maven进阶二】多模块构建Maven项目-Dos命令实现

运行成功之后,会提示StartedJetty Server

【Maven进阶二】多模块构建Maven项目-Dos命令实现

这时候你在浏览器中直接输入exam-web的地址,则会看到Hello World字样,运行成功。

【Maven进阶二】多模块构建Maven项目-Dos命令实现

到此为止,整个框架搭建加测试就算完工了,最后就可以应用到应用环境中,比如eclipse直接导入即可。