首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

Maven权威指南学习札记(1-8章)

2012-08-30 
Maven权威指南学习笔记(1-8章)(1)简单mavn工程创建及操作1、创建简单的工程mvn archetype:create -DgroupId

Maven权威指南学习笔记(1-8章)

(1)简单mavn工程创建及操作1、创建简单的工程mvn archetype:create -DgroupId=org.sonatype.mavenbook.ch03 -DartifactId=simple -DpackageName=org.sonatype.mavenbook2、执行mvn package命令执行过程如下:(生命周期,在mavn进行打包过程中,执行的顺序如下)resources:resources \compiler:compile \resources:testResources \compiler:testCompile \surefire:test \jar:jar3、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-repo5、运行main函数类 mvn install mvn exec:java -Dexec.mainClass=org.sonatype.mavenbook.weather.Main6、查看插件用法的命令 mvn help:describe -Dplugin=exec -Dfull7、查看依赖的类 mvn dependency:resolve8、查看整个项目依赖的类树结构 mvn dependency:tree9、查看完整的依赖踪迹 mvn install -X10、自动化测试程序mvn test11、通过命令行的方式忽略测试失败结果信息mvn test -Dmaven.test.failture.ignore=true12、跳过单元测试命令 mvn install -Dmaven.test.skip=true13、Maven Assembly 插件的预定义装配描述符生成一个可分发的 JAR 文件的过程,该文件包含了项目的二进制文件和所有的依赖。执行命令:mvn install assembly:assembly14、包含所有依赖的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-webapp2、配置Maven Jetty 插件,在 Maven 中运行你的 web应用mvn jetty:run3、清理重新打包操作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将每个工程中的间接依赖添加到每个模块的工程中。

?

热点排行