maven学习资料(搭建web项目)

maven学习资料(搭建web项目)


 Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具

  目前,绝大多数开发人员都把 Ant 当作 Java 编程项目的标准构建工具。遗憾的是,Ant 的项目管理工具(作为 make的替代工具)不能满足绝大多数开发人员的需要。通过检查 Ant 构建文件,很难发现项目的相关性信息和其它元信息(如开发人员/拥有者、版本或站点主页)。
  Maven 除了以程序构建能力为特色之外,还提供 Ant 所缺少的高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目,而使用 Ant 则需要十几行。事实上,由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目现在使用 Maven,而且公司项目采用 Maven 的比例在持续增长。
  Maven这个单词来自于意第绪语,意为知识的积累,最早在Jakata Turbine项目中它开始被用来试图简化构建过程。当时有很多项目,它们的Ant build文件仅有细微的差别,而JAR文件都由CVS来维护。于是Maven创始者开始了Maven这个项目,该项目的清晰定义包括,一种很方便的发布项目信息的方式,以及一种在多个项目中共享JAR的方式。 


特点

  那么,Maven 和 Ant 有什么不同呢?在回答这个问题以前,我要强调一点:Maven 和 Ant 针对构建问题的两个不同方面。Ant 为 Java 技术开发项目提供跨平台构建任务。Maven 本身描述项目的高级方面,它从 Ant 借用了绝大多数构建任务。因此,由于 Maven 和 Ant 代表两个差异很大的工具,所以我将只说明这两个工具的等同组件之间的区别,如表 1 所示。

  

  Maven Ant
标准构建文件 project.xml 和 maven.xml build.xml
特性处理顺序 ${maven.home}/bin/driver.properties 
${project.home}/project.properties 
${project.home}/build.properties 
${user.home}/build.properties 
通过 -D 命令行选项定义的系统特性 
最后一个定义起决定作用。
通过 -D 命令行选项定义的系统特性 
由 <property> 任务装入的特性 
第一个定义最先被处理。
构建规则 构建规则更为动态(类似于编程语言);它们是基于 Jelly 的可执行 XML。 构建规则或多或少是静态的,除非使用 <script> 任务。(请参阅 参考资料以获得相关教程。)
扩展语言 插件是用 Jelly(XML)编写的。 插件是用 Java 语言编写的。
构建规则可扩展性 通过定义 <preGoal> 和 <postGoal> 使构建 goal 可扩展。 构建规则不易扩展;可通过 Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。当你使用Maven的时候,你用一个明确定义的项目对象模型来描述你的项目,然后Maven可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件。
  Maven 有一个生命周期,当你运行 mvn install 的时候被调用。这条命令告诉 Maven 执行一系列的有序的步骤,直到到达你指定的生命周期。遍历生命周期旅途中的一个影响就是,Maven 运行了许多默认的插件目标,这些目标完成了像编译和创建一个 JAR 文件这样的工作。
  此外,Maven能够很方便的帮你管理项目报告,生成站点,管理JAR文件,等等。
使用 <script> 任务模拟 <preGoal> 和 <postGoal> 所起的作用。

常用命令

  mvn archetype:create 创建Maven项目
  mvn compile 编译源代码
  mvn test-compile 编译测试源代码
  mvn test 运行应用程序中的单元测试
  mvn site 生成项目相关信息的网站
  mvn clean 清除项目目录中的生成结果
  mvn package 根据项目生成的jar
  mvn install 在本地Respository中安装jar
  mvn eclipse:eclipse 生成eclipse项目文件
  mvn  jetty :run 启动jetty服务
  mvn  tomcat :run 启动tomcat服务

生成web项目

普通的Java项目,如基础包等: 
   mvn archetype:create   -DgroupId=com.yourcompany  -DartifactId=myproject  -DarchetypeArtifactId=maven-archetype-quickstart 
普通的Web项目,如一个Web项目: 
    mvn archetype:create  -DgroupId=com.yourcompany -DartifactId=myproject  -DarchetypeArtifactId=maven-archetype-webapp 
Appfuse中的Struts 2.0项目: 
    mvn archetype:create -DarchetypeGroupId=org.appfuse -DarchetypeArtifactId=appfuse-basic-struts -DremoteRepositories=http://static.appfuse.org/repository -DarchetypeVersion=2.0-m4-SNAPSHOT -DgroupId=com.mycompany -DartifactId=myproject 
使用上述命令后,你可以很快捷地生成你想要的项目原型。接下来我们只需使用下面命令,生成IDEA的项目文件,然后打开就可以在IDEA下进行项目开发啦。 
     mvn idea:idea -DdownloadSources=true -DdownloadJavadocs=true -DjdkLevel=1.5 
当pom.xml文件发生变化时,我们只需使用下面命令重新生成module文件即可,新生成的module文件会和原来module文件进行很好的合并,通常是依赖的package发生变化啦。 
    mvn idea:module


生成web项目的结构

描述:java代码编译生成的classes文件,都编译到target目录中,但是,我们在eclipse中,开发的项目,编译的class文件都在WEB-INF中,就可以在eclipse中启动tomcat直接发布。但是现在不行,classes文件生成的目录又变。那就要修改maven的pom文件,来改变生成文件的编译路径。

pom.xml修改的代码如下:

<build>
		<finalName>gbStock</finalName>
		<sourceDirectory>${basedir}/src/main/java</sourceDirectory>
		<resources>
			<resource>
				<directory>src/main/resources</directory>
			</resource>
		</resources>
		<outputDirectory>src/main/webapp/WEB-INF/classes</outputDirectory>
		<testResources>
			<testResource>
				<directory>src/main/resources</directory>
			</testResource>
		</testResources>
</build>

这样就实现来,编译的代码就生成到WEB-INF中。现在还是发布有问题,因为运行没有需要的jar,也不在WEB-INF目录中,就需要从资源库中将jar抽取到web-inf中来,还是要修改pom.xml文件,代码如下:

<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-dependency-plugin</artifactId>
				<version>2.1</version>
				<executions>
					<execution>
						<id>copy</id>
						<phase>package</phase>
						<goals>
							<goal>copy-dependencies</goal>
						</goals>
						<configuration>
							<outputDirectory>${basedir}/src/main/webapp/WEB-INF/lib</outputDirectory>
							<stripVersion>false</stripVersion>
						</configuration>
					</execution>
				</executions>
			</plugin>
		</plugins>

这样项目就可以直接发布啦。


Maven实践地址:www.juvenxu.com/mvn-in-action/

Maven插件地址:maven.apache.org/plugins/


你可能感兴趣的:(maven学习资料(搭建web项目))