maven学习笔记之IDEA+Maven+Jetty运行一个简单的web项目

maven学习笔记

一、什么是maven

Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。当你使用Maven的时候,你用一个明确定义的项目对象模型来描述你的项目,然后Maven可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件。简而言之,Maven是一个跨平台的项目管理工具。主要服务于基于Java平台的项目构建、依赖管理和项目信息管理。

二、下载和安装Maven

访问Maven的下载页面:http://maven.apache.org/download.html,其中包含针对不同

平台的各种版本的Maven下载文件。对于首次接触Maven的读者来说,推荐使用Maven

3.0,因此下载apache-maven-3.0-bin.zip


将安装文件解压到你指定的目录;

下一步就是设置环境变量,将 Maven安装配置到操作系统环境中。

打开系统属性面板(桌面上右键单击我的电脑”→“属性),点击高级系统设置,再点击环境变量,在系统变量中新建一个变量,变量名为 M2_HOME,变量值为 Maven 的安装目录 (例如:D:\bin\apache-maven-3.0)。点击确定,接着在系统变量中找到一个名为 Path 的变量,在变量值的末尾加上%M2_HOME%\bin;,注意多个值之间需要有分号隔开,然后点击确定。至此,环境变量设置完成。

这里需要提一下的是 Path 环境变量,当我们在 cmd 中输入命令时,Windows 首先会在当前目录中寻找可执行文件或脚本,如果没有找到,Windows 会接着遍历环境变量 Path 中定义的路径。由于我们将%M2_HOME%\bin 添加到了 Path 中,而这里%M2_HOME%实际上是引用了我们前面定义的另一个变量,其值是 Maven 的安装目录。因此,Windows 会在执行命令时搜索目录D:\bin\apache-maven-3.0\bin,而 mvn 执行脚本的位置就是这里。

打开黑窗口,检查我们是否安装mvn成功。


这就代表Maven安装成功.

第一条命令echo %M2_HOME%用来检查环境变量是否指向了正确的Maven安装目录;而mvn -v执行了第一条 Maven命令,以检查Windows 是否可以找到正确的mvn执行脚本。


q Bin:该目录包含了 mvn 运行的脚本,这些脚本用来配置 Java 命令,准备好classpath 和相关的 Java 系统属性,然后执行 Java 命令。其中 mvn 是基于 UNIX 平台的 shell 脚本,mvn.bat是基于 Windows 平台的 bat 脚本。在命令行输入任何一条 mvn 命令时,实际上就是在调用这些脚本。该目录还包含了 mvnDebug mvnDebug.bat 两个文件,同样,前者是 UNIX 平台的 shell 脚本,后者是 windowsbat 脚本。那么 mvn mvnDebug 有什么区别和关系呢?打开文件我们就可以看到,两者基本是一样的,只是 mvnDebug 多了一条 MAVEN_DEBUG_OPTS 配置,作用就是在运行 Maven 时开启 debug,以便调试 Maven 本身。此外,该目录还包含 m2.conf 文件,这是classworlds 的配置文件。

q Boot: 该目录只包含一个文件,以maven 3.0 为例,该文件为plexus-classworlds-2.2.3.jarplexus-classworlds是一个类加载器框架,相对于默认的java类加载器,它提供了更丰富的语法以方便配置,Maven使用该框架加载自己的类库。更多关于classworlds的信息请参考 http://classworlds.codehaus.org/。对于一般的Maven用户来说,不必关心该文件。

q Conf: 该目录包含了一个非常重要的文件 settings.xml。直接修改该文件,就能在机器上全局地定制 Maven 的行为。一般情况下,我们更偏向于复制该文件至~/.m2/目录下(这里~表示用户目录),然后修改该文件,在用户范围定制 Maven的行为。本书的后面将会多次提到该 settings.xml,并逐步分析其中的各个元素。

q  Lib: 该目录包含了所有 Maven 运行时需要的 Java 类库,Maven 本身是分模块开发的,因此用户能看到诸如 mavn-core-3.0.jarmaven-model-3.0.jar 之类的文件,此外这里还包含一些 Maven 用到的第三方依赖如 common-cli-1.2.jargoogle-collection-1.0.jar 等等。(对于 Maven 2 来说,该目录只包含一个如 maven-2.2.1-uber.jar 的文件原本各为独立 JAR 文件的 Maven 模块和第三方类库都被拆解后重新合并到了这个 JAR 文件中)。可以说,这个 lib 目录就是真正的 Maven。关于该文件,还有一点值得一提的是,用户可以在这个目录中找到 Maven 内置的超级POM。其他: LICENSE.txt 记录了 Maven 使用的软件许可证 Apache License Version 2.0NOTICE.txt 记录了 Maven 包含的第三方软件;而 README.txt 则包含了 Maven 的简要介绍,包括安装需求及如何安装的简要指令等等。

关于~/.m2

默认情况下,~/.m2 目录下除了 repository 仓库之外就没有其他目录和文件了,不过大多数 Maven 用户需要复制 M2_HOME/conf/settings.xml 文件到~/.m2/settings.xml。这是一条最佳实践。

默认情况下,该文件夹下放置了Maven本地仓库.m2/repository。所有的Maven的构件都被存储到该仓库中,以方便重用。

四、在IDEA上编写一个简单的maven项目

新建一个工程,选择Maven,project 选择本地的jdk,下面Create from archetype,一定要勾选,然后选择下面(本截图最后一行)的-webapp


next,然后对GroupIdArtifactId,分别写上自己的项目组名和项目名。groupId 定义了项目属于哪个组,这个组往往和项目所在的组织或公司存在关联,譬如你在 googlecode 上 建 立 了 一 个 名 为 myapp 的 项 目 , 那 么 groupId 就 应 该 是com.googlecode.myapp,如果你的公司是 mycom,有一个项目为 myapp,那么 groupId 就应该是 com.mycom.myapp。本书中所有的代码都基于 groupId com.juvenxu.mvnbook。artifactId 定义了当前 Maven 项目在组中唯一的 ID,我们为这个 Hello World 项目定义artifactId 为 hello-world,本书其他章节代码会被分配其他的 artifactId。而在前面的groupId 为 com.googlecode.myapp 的例子中,你可能会为不同的子项目(模块)分配artifactId,如:myapp-utilmyapp-domainmyapp-web 等等。


Maven的setting文件和本地仓库地址reporitory。为了让项目在创建的时候可以快速构建,需要在Properties增加参数:archetypeCatalog=internal,这个参数的意思是插件使用内部的archetype元数据,如果不加该参数,则默认从remote中央仓库下载,这样会导致构建很慢,而且有可能构建失败,这样就只有一个pom.xml文件,其余的目录结构都不会生成了。


            

Finish,出现以下的界面就代表完成Maven项目的创建成功。


对于最重要的pom.xml文件中


最重要的是 groupIdartifactId version 三行,前面两个刚刚在上面已经介绍过了, version也很容易懂得,指的当前的版本——1.0-SNAPSHOTSNAPSHOT 意为快照,说明该项目还处于开发中,是不稳定的版本。随着项目的发展,version 会不断更新,如升级为 1.01.1-SNAPSHOT1.12.0 等等。

最后一个 name 元素声明了一个对于用户更为友好的项目名称,虽然这不是必须的,但还是推荐为每个 POM 声明 name,以方便信息交流。

五、Jetty插件的安装与使用


根据groupIdartifactId还有version,就可以下载自己所需要的插件。因为Maven内置了一个中央仓库的地址(http://repo1.maven.org/maven2),该中央仓库包含了世界上大部分流行的开源项目构

件,Maven会在需要的时候去那里下载。

然后,在右侧可以看到有Maven Project,点开里面的Plugins,里面有jetty,点开里面的jettyrun,同时也可以create 一个test,.这样以后就不用每次都点开去运行jetty了,而是可以直接点test来运行。


               

                

出现以下信息,就代表我们jetty运行成功了,就可以去运行我们的web项目了。


六、运行WEB项目

mvn jetty:run默认启动的是8080端口tomcat通常占用这个端口,可以手动修改jetty插件的启动端口,命令如下:

                                                    mvn jetty:run -Djetty.port=9999 

另一种方法是修改pom文件,jetty插件部分代码如下:

<plugin> 
                <groupId>org.mortbay.jetty</groupId> 
                <artifactId>maven-jetty-plugin</artifactId> 
                <version>6.1.6</version> 
                <configuration> 
                    <connectors> 
                       <connector implementation="org.mortbay.jetty.nio.SelectChannelConnector"> 
                            <port>9999</port> 
                            <maxIdleTime>60000</maxIdleTime> 
                        </connector> 
                    </connectors> 
                </configuration> 
 </plugin>


如果不用Tomcat 或者很少用就不用担心端口占用问题了,可以直接在地址栏,输入http://localhost:8080/index.jsp或者http://localhost:8080

这个地方和Tomcat不一样,不用在前面输入工程名,因为默认的路径直接到根目录下。所以直接输入就可访问默认页面,index.jsp页面。

至此,我们一个简单的Web项目,从下载Maven到安装Jetty插件,到得出jsp页面就算完成了!

PS:图片上的号不是我的QQ号,自动分配的一个数字。。。。然后就给我加上水印了,不明白为啥。。。。求赞!谢谢!

猜你喜欢

转载自blog.csdn.net/qq_28640763/article/details/79868092