顶级架构师学习——第二十二阶段:项目管理工具Maven

25 篇文章 2 订阅
1 篇文章 0 订阅

昨晚&今早学习了一下Maven部分的内容...

看老师做的贼丫容易,为啥我就跑不起来,这个那个的错一大堆...弄了n久看别人有没啥好的解决办法,然而结局你们应该也都知道了...肿么办,挺急的,在线等!!!⋉(● ∸ ●)⋊

目录

一、Maven简介

二、Maven的安装配置

三、建立Maven的HelloWorld工程

 四、Maven进阶


一、Maven简介

话说我为什么每次要写这个奇奇怪怪的简介...真的是,度娘不好吗emmm

所以,简单的一句话——Maven是用java编写的用于管理java项目的包管理工具~

我刚不死心又去试了其他方法!!!天呐~~成了~~鸡冻

突然有了继续写下去的动力~~ヾ(≧O≦)〃嗷~

 使用Maven管理项目的好处有哪些呢?

我要告诉你的是~灰常多!首先最显而易见的一点就是——大大①节省项目的空间!我们来做个对比~

 左边的是一般的工程,右边的是使用Maven管理的工程!!!占用空间差距大不大?

非常大~因为Maven没有把需要的jar包这些东西扔进工程当中,需要使用的时候到repository中去找就好~

它的第二个优点是能够②一键构建工程,我们在项目目录下进入命令行,使用 mvn tomcat:run 就可以直接跑起来,而不需要我们手动的开启tomcat,这是因为它使用了内置的tomcat,但是效果是一样的~

因为Maven是使用纯java代码写的,所以它跟java一样③可以跨平台

最后一点,由于Maven远程仓库的存在,我们在建立大型项目的时候,可以④极大的提高我们的开发效率~

二、Maven的安装配置

我们从官网上把Maven的压缩包下载下来,解压到一个没有中文名的目录中就可以了~

接下来配置Maven:

我们先在环境变量里面添加MAVEN_HOME,它的值就是你刚才的解压目录,然后把它的bin目录添加到Path里面去,这样我们就可以在任何地方直接使用mvn了~

我们可以用mvn -v来看一下是不是安装好了~PS:要先配好JAVA_HOME,不然报错

Maven的核心配置文件是conf目录下的settings.xml文件,我们现在进行配置~

我们添加 <localRepository>E:/repository</localRepository> ,这个是配置本地仓库的,我们所有Maven的依赖文件都在这里可以找到

为了下载方便,我换了国内阿里云的镜像,因为昨天晚上被坑的贼惨,国外的东西下载慢的一笔...

    <mirror>  
      <id>alimaven</id>  
      <name>aliyun maven</name>  
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>  
      <mirrorOf>central</mirrorOf>          
    </mirror>

 OK~到这里暂时就没什么事了,我们下一步给Demo~

三、建立Maven的HelloWorld工程

1、修改Eclipse的Maven相关配置

选择我们的Maven版本

然后把我们Maven的settings.xml文件导进去

这样第一步的准备就ok了~ 

2、创建一个Maven工程

我们勾上Create a Simple Project,这样会省事儿点~

然后就是填写项目的基本信息了~

我们看一下项目的包结构~

一开始可能会有小红叉出现,不要捉急~我们来干掉它们!

配置Tomcat7~

配置编译器插件~

添加一些后面要用到的jar包~

添加完之后就会自动添加Maven Dependencies~

手动加一个web.xml文件(随便copy一个最基本的web.xml文件就好了我一起给)qwq~~

 

下面我把pom.xml、web.xml和ServletTest.java给出来~

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>cn.itcast.maven</groupId>
	<artifactId>maven-helloworld</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>war</packaging>
	<name>第一个maven工程</name>
	<description>第一个maven工程</description>
	
	<!-- 添加servlet-api,jsp-api -->
	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.9</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>servlet-api</artifactId>
			<version>2.5</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>jsp-api</artifactId>
			<version>2.0</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>org.apache.maven.plugins</groupId>
			<artifactId>maven-resources-plugin</artifactId>
			<version>2.6</version>
		</dependency>		
	</dependencies>
	<build>
		<!-- 配置了很多插件 -->
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.5.1</version>  
				<configuration>
					<source>1.7</source>
					<target>1.7</target>
					<encoding>UTF-8</encoding>
				</configuration>
			</plugin>
		</plugins>
		<pluginManagement>  
        <plugins>  
        	<!-- Tomcat 插件配置 -->
	        <plugin>
	            <groupId>org.apache.tomcat.maven</groupId>
	            <artifactId>tomcat7-maven-plugin</artifactId>
	            <version>2.2</version>
	            <configuration>
	                <!-- 使用内置的模拟Tomcat服务器 -->
	                <path>/helloworld</path>
	                <uriEncoding>UTF-8</uriEncoding>
	                <port>8998</port>
	                <mode>context</mode>
	                <contextReloadable>true</contextReloadable>
	            </configuration>
	        </plugin>
            <plugin>  
                <groupId>org.eclipse.m2e</groupId>  
                <artifactId>lifecycle-mapping</artifactId>  
                <version>1.0.0</version>  
                <configuration>  
                    <lifecycleMappingMetadata>  
                        <pluginExecutions>  
                            <pluginExecution>  
                                <pluginExecutionFilter>  
                                    <groupId>org.apache.maven.plugins</groupId>  
                                    <artifactId>maven-resources-plugin</artifactId>  
                                    <versionRange>[2.0,)</versionRange>  
                                    <goals>  
                                        <goal>resources</goal>  
                                        <goal>testResources</goal>  
                                    </goals>  
                                </pluginExecutionFilter>  
                                <action>  
                                    <ignore />  
                                </action>  
                            </pluginExecution>  
                            <pluginExecution>  
                                <pluginExecutionFilter>  
                                    <groupId>org.apache.maven.plugins</groupId>  
                                    <artifactId>maven-compiler-plugin</artifactId>  
                                    <versionRange>[2.0,)</versionRange>  
                                    <goals>  
                                        <goal>compile</goal>  
                                        <goal>testCompile</goal>  
                                    </goals>  
                                </pluginExecutionFilter>  
                                <action>  
                                    <ignore />  
                                </action>  
                            </pluginExecution>  
                        </pluginExecutions>  
                    </lifecycleMappingMetadata>  
                </configuration>  
            </plugin>  
        </plugins>  
    </pluginManagement>
	</build>
</project>
<?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>
		<servlet-name>servletTest</servlet-name>
		<servlet-class>cn.itcast.maven.servlet.ServletTest</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>servletTest</servlet-name>
		<url-pattern>/test</url-pattern>
	</servlet-mapping>
	
	<welcome-file-list>
		<welcome-file>index.html</welcome-file>
		<welcome-file>index.htm</welcome-file>
		<welcome-file>index.jsp</welcome-file>
		<welcome-file>default.html</welcome-file>
		<welcome-file>default.htm</welcome-file>
		<welcome-file>default.jsp</welcome-file>
	</welcome-file-list>

</web-app>
import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class ServletTest extends HttpServlet {

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

		this.doPost(req, resp);
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		
		req.getRequestDispatcher("/jsp/test.jsp").forward(req, resp);
	}

}

现在我们可以启动工程了~结果不出意外,就是我上面发出来的那个(^u^)

 四、Maven进阶

1、配置依赖

  1.我们添加Maven Repository视图~

我们来rebuild一下

我们在右击pom.xml,选择maven,添加依赖试试~

  2.依赖相关

我们来简单介绍一下添加依赖时的Scope属性吧——

compile:表示编译时需要,测试时需要,运行时需要,打包时需要,比如struts2-core这些核心jar包

provided:表示编译时需要, 测试时需要,运行时不需要,打包时不需要,比如jsp-api、servlet-api这些相关的如tomcat中已经存在的jar包

runtime:表示编译时不需要,测试时需要,运行时需要,打包时需要,比如数据库驱动程序包

test:表示编译时不需要,测试时需要,运行时不需要,打包时不需要,比如junit的jar包

  3.依赖传递

只添加了一个struts2-core依赖,发现项目中出现了很多jar包,这种情况叫依赖传递

  4.依赖版本冲突解决

这里有四种方法~

    · 第一申明优先原则 

<dependencies>
  <!--   spring-beans-4.2.4 -->
  	<dependency>
  		<groupId>org.springframework</groupId>
  		<artifactId>spring-context</artifactId>
  		<version>4.2.4.RELEASE</version>
  	</dependency>
  
  
<!--   spring-beans-3.0.5 -->
  	<dependency>
  		<groupId>org.apache.struts</groupId>
  		<artifactId>struts2-spring-plugin</artifactId>
  		<version>2.3.24</version>
  	</dependency>
</dependencies>

所以使用的是spring-beans-4.2.4的这个依赖

    · 短路径优先原则

<dependency>
  	<groupId>org.springframework</groupId>
  	<artifactId>spring-beans</artifactId>
  	<version>4.2.4.RELEASE</version>
</dependency>

    · 排除原则

<dependency>
  	<groupId>org.apache.struts</groupId>
  	<artifactId>struts2-spring-plugin</artifactId>
    <version>2.3.24</version>
  	<exclusions>
  	    <exclusion>
  		    <groupId>org.springframework</groupId>
  		    <artifactId>spring-beans</artifactId>
  		</exclusion>
  	</exclusions>
</dependency>

    · 版本锁定原则

<properties>
	<spring.version>4.2.4.RELEASE</spring.version>
	<hibernate.version>5.0.7.Final</hibernate.version>
	<struts.version>2.3.24</struts.version>
</properties>

<!-- 锁定版本,struts2-2.3.24、spring4.2.4、hibernate5.0.7 -->
<dependencyManagement>
	<dependencies>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>${spring.version}</version>
		</dependency>
    </dependencies>
</dependencyManagement>

2、分模块开发

创建父工程对子工程进行统一管理~

创建子工程,选择建立Maven Module,填上对应的父模块名称即可。

3、私服

公司中通过使用私服,可以将service层、dao层等工作模块化,需要使用时直接从公司的私服中调用相应的模块即可。这一部分一般由项目经理负责搭建管理,不多解释了~~


女生节?

女生是去过节了,我们这些银就苦了...(啥?有妹子你还苦个pi!!!)

我是小昶,马达内~~

欢迎关注我们的公众号:落饼枫林,共同进步~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值