(1)简单mavn工程创建及操作
1、创建简单的工程
mvn archetype:create -DgroupId=org.sonatype.mavenbook.ch03 -DartifactId=simple -DpackageName=org.sonatype.mavenbook
2、执行mvn package命令执行过程如下:(生命周期,在mavn进行打包过程中,执行的顺序如下)
resources:resources \
compiler:compile \
resources:testResources \
compiler:testCompile \
surefire:test \
jar:jar
3、maven坐标信息(在pom.xml中的信息)
<groupId>org.sonatype.mavenbook.ch03</groupId>
<artifactId>simple</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
4、转eclipse工程
(1):简单转换
mvn eclipse:eclipse
(2):会将工程将框架转换为eclipse工程,并从远程下载jar包到本地仓库(window下是(C:\Documents and Settings\${username}\.m2\repository)
mvn eclipse:eclipse -DdownloadSources=true
(3):path-to-eclipse-workspace是本机的eclipse的worksapce的路径。执行后maven会在eclipse中建立一个M2_REPO环境变量,并将其中所有的jar包引入到工程中,完全自动化
mvn -Declipse.workspace=<path-to-eclipse-workspace> eclipse:add-maven-repo
5、运行main函数类
mvn install
mvn exec:java -Dexec.mainClass=org.sonatype.mavenbook.weather.Main
6、查看插件用法的命令
mvn help:describe -Dplugin=exec -Dfull
7、查看依赖的类
mvn dependency:resolve
8、查看整个项目依赖的类树结构
mvn dependency:tree
9、查看完整的依赖踪迹
mvn install -X
10、自动化测试程序
mvn test
11、通过命令行的方式忽略测试失败结果信息
mvn test -Dmaven.test.failture.ignore=true
12、跳过单元测试命令
mvn install -Dmaven.test.skip=true
13、Maven Assembly 插件的预定义装配描述符生成一个可分发的 JAR 文件的过程,该文件包含了项目的二进制文件和所有的依赖。
执行命令:mvn install assembly:assembly
14、包含所有依赖的jar运行方式如下:
java -cp simple-weather-jar-width-dependency.jar org.sonatype.mavenbook.weather.Main
问题:当加入新的依赖包时,可执行mvn install下载包,但在eclipse中需要手动加入包才能正常操作信息。
(2)简单web应用工程创建和操作
1、创建web工程的命令如下:
mvn archetype:create -DgroupId=org.sonatype.mavenbook.ch05 -DartifactId=simple-webapp -DpackageName=org.sonatype.mavenbook.web -DarchetypeArtifactId=mavn-archetype-webapp
2、配置Maven Jetty 插件,在 Maven 中运行你的 web应用
mvn jetty:run
3、清理重新打包操作
mvn clean install
(3)多个模块工程的创建和操作
注意问题
(1)父工程和子工程之间的关联关系要清楚
如果父工程和子工程在同一目录下,配置路径一定要正确。同时,子工程要添加<relativePath>节点指向父工程的pom.xml文件。
父工程依赖的jar包或插件,在子工程中无需配置,因为子工程已继承父工程的配置,包括groupId、version等信息。
结构图一
simple-parent——————————simple—weather
|
———————simple-webapp
配置信息如下所示:
1、simple-parent
<modules>
<module>simple-weather</module>
<module>simple-webapp</module>
</modules>
2、simple—weather
<!-- 子模块中无需定义groupId和version信息,这些信息都从父模块中继承 -->
<parent>
<groupId>org.sonatype.mavenbook</groupId>
<artifactId>simple-parent</artifactId>
<version>1.0</version>
</parent>
<artifactId>simple-weather</artifactId>
<packaging>jar</packaging>
<name>Simple-Weather</name>
3、simple-webapp
<!-- 子模块中无需定义groupId和version信息,这些信息可以从父模块中继承 -->
<parent>
<groupId>org.sonatype.mavenbook</groupId>
<artifactId>simple-parent</artifactId>
<version>1.0</version>
</parent>
<artifactId>simple-webapp</artifactId>
<packaging>war</packaging>
<name>simple-webapp</name>
<url>http://maven.apache.org</url>
由于simple-webapp依赖于simple—weather,此时需要在<dependences>节点中添加工程依赖
<!-- 该工程依赖weather工程,需要将weather工程的依赖添加进来-->
<dependency>
<groupId>org.sonatype.mavenbook</groupId>
<artifactId>simple-weather</artifactId>
<version>1.0</version>
</dependency>
结构图二
|——simple-parent
|——simple—weather
|——simple-webapp
配置信息如下所示:
1、simple-parent
<modules>
<module>../simple-weather</module>
<module>../simple-webapp</module>
</modules>
2、simple—weather
<!-- 子模块中无需定义groupId和version信息,这些信息都从父模块中继承 -->
<parent>
<groupId>org.sonatype.mavenbook</groupId>
<artifactId>simple-parent</artifactId>
<version>1.0</version>
<!-- 如果没有该属性则该工程必须放到simpe-parent下 -->
<relativePath>../simple-parent/pom.xml</relativePath>
</parent>
<artifactId>simple-weather</artifactId>
<packaging>jar</packaging>
<name>Simple-Weather</name>
3、simple-webapp
<!-- 子模块中无需定义groupId和version信息,这些信息可以从父模块中继承 -->
<parent>
<groupId>org.sonatype.mavenbook</groupId>
<artifactId>simple-parent</artifactId>
<version>1.0</version>
<!-- 如果没有该属性则该工程必须放到simpe-parent下 -->
<relativePath>../simple-parent/pom.xml</relativePath>
</parent>
<artifactId>simple-webapp</artifactId>
<packaging>war</packaging>
<name>simple-webapp</name>
<url>http://maven.apache.org</url>
由于simple-webapp依赖于simple—weather,此时需要在<dependences>节点中添加工程依赖
<!-- 该工程依赖weather工程,需要将weather工程的依赖添加进来-->
<dependency>
<groupId>org.sonatype.mavenbook</groupId>
<artifactId>simple-weather</artifactId>
<version>1.0</version>
</dependency>
(4)多模块工程的优化原则
1、将各个工程中用到的重复jar包提取到parent的pom.xml中,通过properties属性标注版本信息,子模块只记录jar包,而不记录版本号
父模块定义如下:
<properties>
<hibernate.annotations.version>3.3.0.ga</hibernate.annotations.version>
<hsqldb.version>1.8.0.7</hsqldb.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-annotations</artifactId>
<version>${hibernate.annotations.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-commons-annotations</artifactId>
<version>${hibernate.annotations.version}</version>
</dependency>
<dependencies>
<dependencyManagement>
子模块中定义如下:
<dependencies>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>simple-model</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate</artifactId>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-annotations</artifactId>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-commons-annotations</artifactId>
</dependency>
<dependency>
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-jta_1.1_spec</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
</dependency>
</dependencies>
2、子模块都应用父模块的grouId和version,
<parent>
<groupId>org.sonatype.mavenbook</groupId>
<artifactId>simple-parent</artifactId>
<version>1.0</version>
<!-- 如果没有该属性则该工程必须放到simpe-parent下-->
<relativePath>../simple-parent/pom.xml</relativePath>
</parent>
<artifactId>simple-persist</artifactId>
<packaging>jar</packaging>
同时,该模块依赖其他模块时采用如下方式配置:
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>simple-model</artifactId>
<version>${project.version}</version>
</dependency>
3、采用mvn dependency:analyze将每个工程中的间接依赖添加到每个模块的工程中。
分享到:
相关推荐
Maven 使用 tomcat8-maven-plugin 插件 Maven 是一个流行的构建自动化工具,它可以帮助开发者自动完成项目的编译、测试、打包、部署等任务。 Tomcat 是一个流行的 Web 服务器,Maven 提供了一个插件 tomcat8-maven-...
apache-maven-3.6.3-bin。apache-maven-3.6.3-bin。apache-maven-3.6.3-bin。apache-maven-3.6.3-bin。apache-maven-3.6.3-bin。apache-maven-3.6.3-bin。apache-maven-3.6.3-bin。apache-maven-3.6.3-bin。apache-...
云的学习笔记-云的学习笔记系统-云的学习笔记系统源码-云的学习笔记管理系统-云的学习笔记管理系统java代码-云的学习笔记系统设计与实现-基于ssm的云的学习笔记系统-基于Web的云的学习笔记系统设计与实现-云的学习...
1. mvn-examples-1.0 <module>ch03-simple <module>ch04-custom <module>ch05-simple-web <module>ch06-multi <module>ch07-multi-spring <module>ch08-optimize <module>ch09-pom ...2.Maven权威指南中文版
maven3-plugin-3.0.1-sources.jar
Maven权威指南中文版 Maven是一种基于项目对象模型(POM)的项目管理和构建工具,旨在提供一种通用的、跨语言的、跨平台的项目管理方式。 Maven的主要特点是约定优于配置(Convention Over Configuration),它提供...
解决tomcat8-maven-plugin-3.0-r1655215.jar阿里云同有的问题。放到路径org\apache\tomcat\maven\tomcat8-maven-plugin\3.0-r1655215\就可以了
maven3-plugin-3.0.0-1-sources.jar
【标题】:“maven笔记:maven-overlay-实战笔记” 在 Maven 的世界里,"overlay" 是一个重要的概念,主要用于Web项目的构建和部署。Maven overlay 技术允许你将多个项目的输出“重叠”在一起,形成一个新的项目,...
** Maven权威指南中文详解 ** Maven,一个Java项目管理和综合工具,是开发人员不可或缺的神器,尤其在大型企业级项目中,它以其强大的依赖管理、构建自动化和标准化的项目结构,大大提升了开发效率。本篇文章将基于...
apache-maven-3.0.5 apache-maven-3.1.1 apache-maven-3.2.5 apache-maven-3.3.9 apache-maven-3.5.4 apache-maven-3.6.3 apache-maven-3.8.5 每个版本包含4个文件: apache-maven-3.8.5-bin.tar.gz apache-maven-...
### Maven权威指南中文版知识点概览 #### 一、引言与Maven概念 - **Maven概述**:Maven是一种项目管理和理解工具,旨在通过一套标准流程来简化项目的构建过程。 - **约定优于配置(Convention Over Configuration)...
云的学习笔记-云的学习笔记系统-云的学习笔记系统源码-云的学习笔记管理系统-云的学习笔记管理系统java代码-云的学习笔记系统设计与实现-基于ssm的云的学习笔记系统-基于Web的云的学习笔记系统设计与实现-云的学习...