您的位置:首页 > 其它

Maven

2016-01-27 10:40 393 查看

安装

官网下载压缩包,解压,设置环境变量

M2_HOME -> D:\apache-maven-3.3.9

path -> %M2_HOME%\bin;

mvn -version 进行验证

命令

以下命令实在根目录下执行,第一次执行都会下载以下依赖的库

mvn help:effective-pom 查看项目实际生效的POM,我在Eclipse建的目录下可以成功运行,在命令行建的项目里不能运行 ???

mvn archetype:generate 插件名:目标名 执行archetypy插件的generate目标 archetype是指项目的骨架

mvn pluginId:goalId 目标是一个工作单元,插件是多个目标的集合

mvn clean 会清理到原来打的包

mvn package 打包,可以查看绑定标准插件目标到默认的生命周期

mvn site 创建站点报告

mvn clean site 删除site以外的target中的文件

mvn tomcat:run 启动tomcat

mvn tomcat7:run 使用tomcat7插件

mvn jetty:run

mvm clean package 重新打包

命令行 helloworld

新建文件夹 maven,并进入目录

mvn archetype:generate archetype插件是项目模板工具,自动生成各种项目的默认结构

第一次运行比较慢,要下载很多核心的插件,最后会显示maven仓库中有多少个项目原型,然后会提供一个项目编号

选择最新版本,输入groupId:com.coder352 和 artifactId:mvnstudy 项目的唯一标识,对应项目的名称

然后输入项目的版本号:Enter 选择默认的1.0 SNAPSHOT

输入package 默认为groupId,选择默认回车

进入刚才的artifactId创建mvnstudy,运行命令行 mvn package ,出现BUILD SUCCESS 表示打包成功,目录下会多出一个target目录

java -cp target/mvnstudy-1.0-SNAPSHOT.jar com.coder352.App 其中cp参数和classpath相同,指定需要依赖的类库 && com.coder352.App 的路径是target/classes/com/coder352/App.class

或者进入target目录,java -cp mvnstudy-1.0-SNAPSHOT.jar com.coder352.App

或者在进入classes java com.coder352.App 应为mvnstudy-1.0-SNAPSHOT.jar中就有com.coder352.APP

Eclipse helloworld

New Project -> Default Workspace -> Archetype(原型选择) filter:quick -> Group.. just as above -> Finish

打开src/main/java 中com.coder352.mvnstuy App.java

下面是打包文件

Run -> Run Configuration -> Maven Build -> 右键

Name: mvn_study && Base directory: mvnsudy(Browse Workspace) && Goals: package -> Apply && Run

刷新项目,出现target/mvnstudy-1.0-SNAPSHOT.jar

很不理解为什么需要两次才能SUCCESS,命令行中也是

配置Maven插件

Windows -> Preference -> Maven -> Installations -> Add

选择自己从官方下载的maven压缩包解压出来的目录

退出,选择自己安装的maven,不要用eclipse默认的maven

Maven -> User Settings 选择全局配置文件,在安装目录中的conf/settings.xml

Preference -> Maven 选择Download Artifact(依赖的) Sources 和 JavaDoc

修改本地仓库路径

默认在user/codeer353/.m2/

修改本地仓库的位置:conf/settings.xml

取消localRespository的注释,并将下面的路径改为自己的路径

配置远程仓库

在pom.xml中标签后添加

<repositories>
<repository>
<id>oschina</id>
<name>oschina repository</name>
<url>http://maven.oschina.net/content/groups/public/</url>
</repository>
</repositories>


项目站点报告

mvn site -> cd target -> 生成新的目录:site

打开index.html,在标签下面添加

<description>这是一个测试项目</description>
<url>http://maven.apache.org</url>
<organization>
<name>coder352</name>
<url>microsofr.com</url>
</organization>
<developers>
<developer>
<id>coder352</id>
<name>coder352</name>
</developer>
</developers>


在最后的标签上面添加配置信息

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<version>3.3</version>
<configuration>
<locales>zh_CN</locales>
</configuration>
</plugin>
</plugins>
</build>


mvn clean site -> 打开target/site/index.html

会看到除了site,其他的都已经被删除了,site也已经更新了

maven 创建Web项目 比较传统

在maven目录中mvn archetype:generate

输入web过滤可选项目原型,选择67: remote -> org.codehaus.mojo.archetypes:webapp-javaee7 (Archetype for a web application using Java EE 7.)

选择1.1版本 && groupId: com.coder352 && artifactId: helloweb && 版本号: 默认 && package: default

cd helloweb && mvn package && 将target/helloweb-1.0-SNAPSHOT.war 放到Tomcat的tomcat/webapps下

在Tomcat的tomcat-users.xml文件中的哪些注释了的role下面添加

启动Tomcat,访问localhost:8080 登陆进去就可以查看了

使用Tomcat的maven插件

打开pom.xml 添加一个plugins标签里最后添加plugin标签

<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat6-maven-plugin</artifactId>
<version>2.2</version>
</plugin>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
</plugin>


返回项目根目录 mvn tomcat:run && localhost:8080/helloweb

返回项目根目录 mvn tomcat7:run && localhost:8080/helloweb

使用Jetty运行Web项目

打开pom.xml 添加一个plugins标签里最后添加plugin标签

<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
</plugin>


maven jetty:run && localhost:8080 Jetty插件把项目直接部署到了根目录下

添加J2EE依赖

打开pom.xml 添加Servlet API && 在dependencies标签的最后添加一个

<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>  <!-- 设置provided的依赖范围,告诉maven,jar文件已经由容器提供了,不需要打包到war文件中 -->
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>  <!-- 添加jsp规范的依赖 -->
<version>2.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>  <!-- 添加jstl规范的依赖 -->
<version>1.2</version>
<scope>provided</scope>
</dependency>


回到根目录 mvn clean package 如果显示SUCCESS则语法没有问题

如果不行,多试几次,卡住了按回车

查看/target/helloweb-1.0-SNAPSHOT/WEB-INF/目录下有没有lib目录,如果没有,把上面三个scope注释掉,重新打包mvn clean package

再取消注释

创建JSP和Servlet

进入src/main/webapp 创建jsp文件 && touch index.jsp && 可以把index.html的内容复制进去,修改title为 first jsp

cd src/main/java/com/coder352 && touch HelloServlet.java && 编辑输入

package com.coder352;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HelloServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
PrintWriter out = response.getWriter();
out.println("hello world");
out.flush();
out.close();
}
}


cd main/webapp && mkdir WEB_INF && cd WEB-INF && touch web.xml && 编辑

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>com.coder352.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/helloServlet</url-pattern>
</servlet-mapping>
</web-app>


mvn clean package && mvn jetty:run && localhost:8080/helloServlet

我的target文件夹clean删不掉,把里面的东西全删干净,接着mvn package….OK!!!

在 Eclipse 中使用 Maven 构建 Web 项目 *这里有bug还没改

New Maven Project -> Workspace: Default -> Archetype: filter(web) && org.apache.maven.archetype -> Group Id: com.coder352 && Artifact Id: helloweb -> Finish

默认没有创建src/main/java文件夹,自己创建一个

右键src/main/java -> New Class -> package: com.coder352 && Class: HelloServlet -> Finish

把上面的HelloServlet的代码复制过来 && 会出现好多错误提示,因为pom.xml中没有配置servlet的API依赖

把依赖标签中的所有都替换掉

<dependencies>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-web-api</artifactId>
<version>7.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
<scope>provided</scope>
</dependency>
</dependencies>


把jetty插件的配置也复制过来,在命令行创建的pom.xml的最后那个plugin里

放到eclipse里的pom.xml的最后一个标签里的最后面

<plugins>
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
</plugin>
</plugins>


Run Configuration -> Maven Build && 右键New -> Name: mvn_helloweb && Base directory: helloweb(Browse Workspace) && Goals: jetty:run && 勾选 Skip Tests -> Apply && Run

有Bug,!!!!!,会报错,把上面的命令行生成的导入到eclipse中运行,OK!!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: