JAVAEE

JAVAEE管理——Maven

2018-07-10  本文已影响5人  So_ProbuING

Maven简介

是apache下的一个开源项目,是纯java开发,并且只是用来管理java项目的

Maven好处

依赖管理

图片.png

Maven的好处

依赖管理:就是对项目依赖的jar包的统一管理 可以节省空间
一键构建
可以跨平台
应用于大型项目 可以提高开发效率

Maven构建

Maven的三种仓库

本地仓库 自己维护

配置本地仓库需要修改setting.xml文件

 <!-- localRepository
   | The path to the local repository maven will use to store artifacts.
   |
   | Default: ${user.home}/.m2/repository 默认本地仓库
  <localRepository>/path/to/local/repo</localRepository>
  -->
> default 默认的本地仓库

远程仓库 公司维护

中央仓库 maven团队维护

Maven的目录结构

maven项目目录结构
Maven的目录结构

Maven的常用命令

clean清理

clean是maven工程的清理命令,执行clean会删除target目录的内容


clean命令

Compile

Compile是maven工程的编译命令,作用是将src/main/java下的文件编译为class文件输出到target目录下


图片.png

Test

test是maven工程的测试命令,会执行src/test/java下的单元测试类

图片.png

package

package是maven工程的打包命令,对于java工程执行package打成jar包,对于web工程打成war包


图片.png

install 将项目发布到本地仓库

install是maven工程的安装命令,执行install将maven打成jar包或war包发布到本地仓库

对于web工程 发布到本地仓库并没有任何作用

install

Tomcat:run 一键启动

site 生成对应的工程说明

Maven的生命周期

compile test package install
执行install的时候 compile test package都会执行

图片.png

clean的生命周期

maven对项目构建过程分为三套相互独立的生命周期。
CleanLifecycle 在进行真正的构建之前进行一些清理工作
Default Lifecycle 构建的核心部分,编译,测试,打包,部署等
SiteLifecycle 生成项目报告,站点 发布站点

各阶段生命周期

不同的生命周期命令可以同时执行

mvn clean package

构建Maven项目 IDE:Intelij idea

创建项目

创建项目

选择maven

选择maven

填写项目信息

图片.png

添加tomcat插件

在pom.xml添加tomcat插件

pom.xml配置

项目启动配置

图片.png

参考大神文章:https://my.oschina.net/u/2935623/blog/1803198

maven坐标定义

每个maven工程都需要定义本工程的坐标,坐标是maven对jar包身份定义:

<!--项目名称,定义为组织名+项目名 类似包名-->
 <groupId>cn.probuing.maven</groupId>
<!--模块名称-->
    <artifactId>maven_tx</artifactId>
<!--当前项目版本号-->
    <version>1.0-SNAPSHOT</version>
<!--打包类型-->
    <packaging>war</packaging>
    * jar:执行package会打成jar包
    * war:执行package会打成war包
    * pom:用于maven工程的集成,通常父工程设置为pom

maven与Struts2整合

使用struts2与maven传递一个客户id 跳转页面

创建项目

创建项目

设置packaging 为war

<?xml version="1.0" encoding="UTF-8"?>
<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.probuing.crm</groupId>
    <artifactId>mavenProj</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>war</packaging>
</project>

添加web目录

图片.png

添加tomcat插件

   <plugins>
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <version>2.2</version>
                <configuration>
                    <port>8080</port>
                    <path>/mavssh</path>
                </configuration>
            </plugin>
        </plugins>

添加依赖 管理jar包

  <!--依赖管理-->
    <dependencies>
        <dependency>
            <groupId>org.apache.struts</groupId>
            <artifactId>struts2-core</artifactId>
            <version>2.3.24</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jsp-api</artifactId>
            <version>2.0</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.10</version>
        </dependency>
    </dependencies>

为避免包冲突,添加servlet-api.jar和jsp-api.jar 注意选择scope为provided

配置struts2

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>
    <!-- 配置常量 -->
    <!-- 字符集 -->
    <constant name="struts.i18n.encoding" value="UTF-8"></constant>
    <!-- 开发模式 -->
    <constant name="struts.devMode" value="true"></constant>
    <!-- 主题 -->
    <constant name="struts.ui.theme" value="simple"></constant>
    <!-- 扩展名 -->
    <constant name="struts.action.extension" value="action,,"></constant>

    <!-- 通用package -->
    <package name="customer" namespace="/" extends="struts-default">

        <action name="customerAction" class="cn.probuing.action.CustomerAction">
            <result name="success">/info.jsp</result>
        </action>

    </package>
</struts>
 <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

编写action

public class CutomerAction extends ActionSupport {
    private Long custId;
    public Long getCustId() {
        return custId;
    }
    public void setCustId(Long custId) {
        this.custId = custId;
    }
    public String findById(){
        return SUCCESS;
    }
}
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
Hello Every body it's from maven
</body>
</html>

依赖范围

Compile

编译时需要,测试时需要,运行时需要,打包时需要

Provided

编译时需要,测试时需要,运行时不需要,打包时不需要

Runtime

编译时不需要,测试时需要,运行时需要,打包时需要

Test

编译时不需要,测试时需要,运行时不需要,打包也不需要

整合框架时依赖冲突的解决

在我们整合框架的时候,在集成了多个框架的时候可能会出现依赖冲突的情况,我们解决依赖冲突主要有以下几个方式

第一声明优先原则

优先声明的会先进行配置,如下配置中Maven会集成spring-beans-4.2.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>

路径优先原则

    <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>

分模块开发

依赖传递

依赖传递

依赖关系

在这里需要注意的是 对于有些工程 定义的 依赖的生命周期为scope为test的依赖,需要手动添加到依赖中

上一篇 下一篇

猜你喜欢

热点阅读