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 jspcd 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!!!!
相关文章推荐
- FloatingActionMenu 向上弹出菜单
- 浏览器、apache的连接超时详解
- Linux性能测试工具
- 记录-Hibernate+servlet实现简单的增、删、查、改
- MacOS xampp配置环境执行composer命令出现 error:14090086 的解决方案
- 触屏touch事件记录
- java.lang.UnsatisfiedLinkError: D:\Tomcat-7.0.59\apache-tomcat-7.0.59\bin\tcnative-1.dll: Can't load IA 32-bit .dll on a AMD 64-bit platform
- spring + atomikos解决多数据源事务管理
- POJ 3254 Corn Fields 状态压缩dp 查找情况数
- 欢迎使用CSDN-markdown编辑器
- 择日不如撞日,选择写博客记录自己的成长
- JS中校验数组中是否有重复字符
- CSS实现垂直居中的5种方法
- 统计学中抽样调查和一些常用的方法
- Eclipse插件开发2-第一个插件
- 1900端口
- Eclipse插件开发1
- node.js 学习记录(一)安装
- box-sizing:border-box;和 box-sizing:content-box;
- Spring MVC +Mybatis + Maven 配置之dataSource配置