Maven 빠른 시작 Maven 초보자는 IDEA에서 Maven을 사용하기위한 Maven 기본 단계를 확인해야합니다.

메이븐

1. Maven을 사용하는 이유

  1. 프로젝트가 매우 큰 경우 패키지를 사용하여 모듈을 분할하는 것은 적합하지 않습니다. Maven은 프로젝트를 여러 프로젝트로 분할 할 수 있습니다.
  2. Maven을 사용하면 jar 패키지를웨어 하우스에 저장하고 사용할 때 jar 패키지를 복사하여 붙여 넣지 않고 창고에서 직접 가져올 수 있습니다.
  3. 잘 알려진 모든 jar 패키지가 Maven 창고에 배치되어 온라인으로 검색 할 필요가 없습니다.
  4. Maven을 사용하여 jar 패키지가 의존하는 jar 패키지를 자동으로 가져옵니다.

둘째, Maven 소개

Maven은 Apache의 오픈 소스 프로젝트 관리 도구입니다. 향후 생성되는 JavaSE 프로젝트이든 JavaEE 프로젝트이든 Maven 프로젝트로 생성됩니다. Maven의 각 프로젝트는 하나의 객체 (프로젝트)에 해당합니다. 객체 (프로젝트) 그들 사이에는 관계가 있습니다. 관계에는 종속성, 상속, 집계가 포함되며 Maven 프로젝트를 사용하면 jar 패키지를 가져오고 프로젝트를 분할하는 효과를 더 쉽게 얻을 수 있습니다.

셋, Maven 다운로드 및 설치

  1. Maven 다운로드 주소 : http://maven.apache.org/

여기에 사진 설명 삽입

  1. Maven 설치

(1) 다운로드 한 zip 압축을 풀고

여기에 사진 설명 삽입

(2) conf 디렉토리의 settings.xml에서 수정

① 설정 탭에서 추가

<localRepository>E:\maven_localRepository</localRepository>

레이블의 내용은 jar 패키지를 저장하는 로컬웨어 하우스의 디스크 위치를 나타냅니다 (폴더를 만들어 직접 지정할 수 있음).

지정되지 않은 경우 로컬 저장소의 기본 경로 : C : \ Users [현재 로그인 한 사용자 이름] .m2 \ repository

② 설정 태그에서 미러 태그에 추가

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

인터넷의 원격 창고에서 jar 패키지를 다운로드 할 때 Ali의 미러링이 사용되고 공식 주소를 사용하면 다운로드 속도가 매우 느림을 나타냅니다.

③ 설정 탭의 프로필 탭에 추가

<profile>
	<!-- 告诉maven我们用jdk1.8 -->
	<id>jdk-1.8</id>
	<!-- 开启JDK的使用 -->
	<activation>
		<activeByDefault>true</activeByDefault>
		<jdk>1.8</jdk>
	</activation>
	<properties>
		<!-- 配置编译器信息 -->
		<maven.compiler.source>1.8</maven.compiler.source>
		<maven.compiler.target>1.8</maven.compiler.target>
		<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
	</properties>
</profile>

운영 환경에 여러 JDK가있는 경우 JDK를 지정해야하며 여기에서 JDK8로 지정해야합니다.

  1. Maven 환경 변수 구성

여기에 사진 설명 삽입

여기에 사진 설명 삽입

구성 후 콘솔에 mvn -v를 입력하여 설치가 성공했는지 확인합니다 (jdk 버전과 maven 버전은 설치가 성공했음을 나타냄).

여기에 사진 설명 삽입

세, Maven 창고 소개

1. 원격 창고

(1) 중앙 창고

주소 : https://mvnrepository.com/

jar 패키지를 온라인으로 다운로드하면 그림과 같이 기본적으로 중앙웨어 하우스에서 다운로드됩니다.

여기에 사진 설명 삽입

(2) 중앙 창고 미러링

중앙 창고의 트래픽을 공유합니다. 이전에 구성된 Ali 이미지는 중앙 창고 이미지입니다.

(3) 사설 서버 창고

회사 내부 용으로 인트라넷에 구축 된 내부 Maven웨어 하우스

2. 지역 창고

원격웨어 하우스에서 다운로드 한 jar 패키지는 로컬웨어 하우스에 저장되며 경로는 이전에 구성되었습니다.

3. 창고 우선 순위

여기에 사진 설명 삽입

넷째, Maven 좌표 도입

여기에 사진 설명 삽입

다섯, Maven 프로젝트 유형

  1. POM 엔지니어링

POM 프로젝트는 jar 패키지의 버전 제어에 사용되는 상위 프로젝트 또는 집계 프로젝트에서 사용되는 논리적 프로젝트입니다.

  1. JAR 프로젝트

jar에 패키징되어 jar 패키지로 사용됩니다. 즉, 공통 로컬 프로젝트 —> Java 프로젝트

  1. WAR 프로젝트

전쟁으로 패키징되어 서버 프로젝트에 게시됩니다.

여섯, IDEA에서 Maven 사용

  1. IDEA에서 Maven 구성

여기에 사진 설명 삽입

  1. IDEA에서 Maven 프로젝트 만들기

여기에 사진 설명 삽입

  1. Maven 프로젝트의 디렉토리 구조 소개

src
에는 프로젝트의 모든 소스 코드 및 리소스 파일과 프로젝트와 관련된 기타 파일이 포함됩니다.


자바 소스 코드는 src / main / java 디렉토리에 저장됩니다.

src / main / resources
는 xml 구성 파일 및 속성 파일과 같은 기본 리소스 파일을 저장합니다.

src / test / java
는 테스트에 사용되는 클래스를 저장합니다. 예를 들어 JUNIT의 테스트는 일반적으로이 디렉토리에 있습니다.

src / test / resources
는 테스트 환경에 대한 리소스 파일을 저장할 폴더를 수동으로 만들 수 있습니다.

pom.xml
은 Maven의 가장 중요한 구성 파일로 프로젝트와 프로젝트 간의 관계를 구성하고 jar 패키지를 가져 오는 등의 작업을 할 수 있습니다.

대상
은 컴파일 된 콘텐츠가있는 폴더 인 src와 동일한 수준에 있습니다 (현재는 컴파일되지 않았으므로 이러한 구조가 없음).

생산 방법 :

여기에 사진 설명 삽입

참고 : 설치를 클릭하면 경고가 나타날 수 있습니다.

여기에 사진 설명 삽입

솔루션 :
pom.xml에 추가하십시오.

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

일곱, Maven 프로젝트 간의 관계

1. 의존성

프로젝트 개발 또는 운영에는 B 프로젝트 지원이 필요합니다. 즉, A 프로젝트는 B 프로젝트에 의존합니다.

일반적으로 종속성은 jar 패키지를 가져 오는 것이며 B 프로젝트는 자체 프로젝트를 설치 한 후 jar 패키지이거나웨어 하우스의 jar 패키지 일 수 있습니다.

종속성 주입 방법 : pom.xml에서 구성 :

여기에 사진 설명 삽입

프로세스 : 먼저 로컬 창고에서 찾을 수없는 경우 온라인으로 원격 창고로 이동하여 로컬 창고로 다운로드하고 가져옵니다. 결과는 다음과 같습니다.

여기에 사진 설명 삽입

의존의 이점 :

(1) 프로그래머는 jar 패키지를 수동으로 추가 할 필요가 없으며 pom.xml에서 직접 구성하고 종속 종속성 구성을 삭제하면 프로젝트가 해당 jar 패키지를 자동으로 삭제합니다.

(2) jar 패키지 충돌 문제를 해결할 수 있습니다. 다른 버전의 동일한 jar 패키지를 가져 오면 두 개의 jar 패키지가 프로젝트에 나타나지 않고 그중 하나는 자동으로 유지됩니다.

① 의존성의 특징과 원리

(1) 특징

Maven 프로젝트 1은 jar1에 종속되고, Maven 프로젝트 2는 Maven 프로젝트 1에 종속되며, 그러면 jar1도 Maven 프로젝트 2로 가져 오며 프로젝트 1에 종속 된 jar1은 직접 사용할 수 있습니다.

프로젝트 2에 종속 된 프로젝트 1의 방법은 jar 패키지에 의존하는 방법과 동일하며 프로젝트 설치 후 좌표를 구성하기 만하면됩니다.

(2) 원리

i. 최단 경로 우선 원칙

예를 들어 A, B, C 간의 종속성이 A-> B-> C-> D (2.0) 및 A-> E-> (D1.0)라고 가정하면 D (1.0)이 사용됩니다. A에서 E까지의 경로가 더 짧습니다
. ii. 우선 우선 순위 원칙을 선언합니다.

종속성 경로의 길이가 같다는 전제하에 pom.xml의 종속성 선언 순서에 따라 구문 분석 및 사용 대상이 결정되고 가장 높은 순서의 종속성이 먼저 사용됩니다.

② 의존성 제거

A는 B, B는 C, C는 mybatis.jar, C의 mybatis.jar은 A에서 제외됩니다.

<!-- 项目A的pom.xml中编辑 -->
<dependencies>
    <!-- 依赖项目C -->
    <dependency>
        <groupId>com.qizegao</groupId>
        <artifactId>MavenDemo</artifactId>
        <version>1.0-SNAPSHOT</version>

        <!-- <exclusions>中可以使用多个<exclusion> -->
        <exclusions>
            <exclusion>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <!-- 不写版本号 -->
            </exclusion>
        </exclusions>
    </dependency>
</dependencies>

③ 의존 범위

종속성 범위는 종속 jar 패키지가 유효하고 유효하지 않은시기를 결정합니다.

종속 범위 사용 :

여기에 사진 설명 삽입

依赖范围分类:

compile
이것은 기본 범위이며 지정되지 않은 경우 종속성 범위가 사용됩니다. 즉, 종속성이 컴파일과 런타임 모두에 적용됩니다.

제공된
종속성은 프로젝트를 컴파일하고 테스트 할 때 필요하지만 프로젝트를 실행할 때는 적용되지 않습니다.

런타임
은 컴파일 타임에 적용 할 필요는 없지만 런타임 에만 적용됩니다.

시스템
종속성 범위는 제공된 것과 유사하며 시스템 범위 종속성을 사용하는 경우 종속 파일의 경로는 systemPath 태그를 통해 명시 적으로 지정해야합니다.

테스트는
테스트 코드를 컴파일하고 테스트를 실행할 때만 필요하며 프로젝트의 정상적인 작동에는 이러한 종속성이 필요하지 않습니다.


jar 패키지의 버전 번호를 지정하려면 pom.xml 구성 파일의 태그에서 import import를 선언해야합니다.

2. 상속

상위 프로젝트를 POM 프로젝트로 선언하면 하위 프로젝트는 상위 프로젝트가 기본적으로 의존하는 jar 패키지를 가져옵니다
(dependencyManagement 태그를 사용하여 모든 jar 패키지를 관리하고 jar 패키지의 버전을 제어).

<groupId>com.qizegao</groupId>
<artifactId>ParentMaven</artifactId>
<version>1.0-SNAPSHOT</version>
<!-- 打包类型,默认是jar -->
<packaging>pom</packaging>

<!-- 管理所有jar包,使用dependencyManagement标签表示不会引入这些jar包,仅管理 -->
<!-- 使用properties标签和${}控制版本 -->
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <!-- 使用properties标签中的版本号 -->
            <version>${name}</version>
        </dependency>
    </dependencies>
</dependencyManagement>

<properties>
    <!-- 此标签可任意起名 -->
    <name>3.5.6</name>
</properties>

위의 프로젝트에서 상속 할 하위 프로젝트를 선언합니다.

<!-- parent标签指定父工程 -->
<parent>
    <groupId>com.qizegao</groupId>
    <artifactId>ParentMaven</artifactId>
    <version>1.0-SNAPSHOT</version>
    <!-- 以下标签声明父工程的pom.xml文件所在的位置 -->
    <relativePath>../ParentMaven/pom.xml</relativePath>
</parent>

<dependencies>
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <!-- 无需声明版本号,继承父工程的版本号,父工程可以控制子工程的版本号 -->
        <!-- 子工程可以使用version标签指定版本号而不使用父工程的版本号 -->
    </dependency>
</dependencies>

참고 : 상위 프로젝트가 가져 오기 종속성 범위를 사용하는 경우 하위 프로젝트는 상위 프로젝트에서 지정한 버전 번호를 사용해야합니다.

3. 집계

개발 된 프로젝트에 여러 모듈이있는 경우 (각 모듈은 독립적 인 프로젝트) 통합 프로젝트를 사용해야합니다.

총괄 프로젝트 (최상위 수준의 상위 프로젝트)의 전체 프로젝트는 POM 프로젝트 여야하며 나머지 모듈은 여기에 포함됩니다. 상위 프로젝트의 태그를 사용하여 포함 된 하위 모듈을 표시합니다.

8. Maven에서 일반적으로 사용되는 플러그인

1. 리소스 복사 플러그인

Maven이 패키징 할 때 기본적으로 src / main / resources의 구성 파일 만 프로젝트에 복사되고 패키징됩니다.이 디렉토리의 구성 파일은 패키징 할 때 프로젝트에 추가되지 않습니다.이 플러그인을 사용하여 지정된 파일을 패키징합니다.

pom.xml에 패키징 할 리소스를 구성합니다.

<build>
    <resources>
        <resource>
            <!-- 要打包的资源位置 -->
            <directory>src/main/java</directory>
            <includes>
                <!-- 要打包的资源 -->
                <include>**/*.xml</include>
            </includes>
        </resource>
        <resource>
            <!-- 要打包的资源位置 -->
            <directory>src/main/resources</directory>
            <includes>
                <!-- 要打包的资源 -->
                <include>**/*.xml</include>
                <include>**/*.properties</include>
            </includes>
        </resource>
    </resources>
</build>

2. Tomcat 플러그인

외부 Tomcat 서버에 의존 할 필요가 없습니다. Maven은 tomcat 플러그인을 제공합니다.

(1) 웹 프로젝트 생성

여기에 사진 설명 삽입
여기에 사진 설명 삽입

생성 후 구조 (Java, 리소스 등과 같은 누락 된 디렉토리는 수동으로 생성 할 수 있음) :

여기에 사진 설명 삽입

 注意:创建项目时如果出现警告:
		   No archetype found in remote catalog. Defaulting to internal catalo

해결책:
여기에 사진 설명 삽입

(2) pom.xml 파일에서 Tomcat 플러그인 구성

<build>
  <plugins>
    <!-- 配置Tomcat插件 -->
    <plugin>
      <groupId>org.apache.tomcat.maven</groupId>
      <artifactId>tomcat7-maven-plugin</artifactId>
      <version>2.2</version>
      <configuration>
        <!-- 配置Tomcat监听端口 -->
        <port>8080</port>
        <!-- 配置项目的访问路径(Application Context) -->
        <path>/</path>
      </configuration>
    </plugin>
  </plugins>

여기에 사진 설명 삽입

작업 결과 :
주소 표시 줄에 입력 : http : // localhost : 8080 / MyProject
가 index.jsp 페이지에 성공적으로 액세스했습니다.
코드가 복잡하지 않도록 jsp 페이지의 인코딩 형식을 UTF-8로 수정합니다.

이것은 서버가 성공적으로 시작되었음을 나타냅니다.
여기에 사진 설명 삽입

9, Maven의 공통 명령

Maven 명령은 위 아이콘의 오른쪽에서 직접 클릭하여 실행할 수 있습니다.

  • 설치
    지역 창고로 현지 컴파일, 포장을 포함하여 설치하고, 설치를

Compile-javac 명령
Package-jar 명령, Java 코드를
jar 파일로 패키지화 로컬웨어 하우스에 설치-패키지화 된 jar 파일을 로컬웨어 하우스에 저장

  • clean
    은 컴파일 된 정보를 지우고 프로젝트의 대상 디렉토리를 삭제하며 패키지 된 jar 파일을 삭제합니다.


  • javac 명령에 해당하는 컴파일 만 컴파일

  • 패키지
    , 컴파일 및 패키징의 두 가지 기능 포함

설치와 패키지의 차이점 :

package 명령은 프로젝트 컴파일, 단위 테스트 및 패키징 기능을 완료했지만 실행 가능한 jar 패키지 (war 패키지 또는 다른 형태의 패키지)를 로컬 Maven웨어 하우스 및 원격 Maven 개인 서버웨어 하우스에 배포하지 않았습니다.

install 명령은 프로젝트 컴파일, 단위 테스트 및 패키징 기능을 완료합니다. 동시에 실행 가능한 jar 패키지 (war 패키지 또는 다른 형태의 패키지)가 로컬 Maven웨어 하우스에 배포되지만 원격 Maven 개인 서버웨어 하우스에는 배포되지 않습니다. .

추천

출처blog.csdn.net/weixin_49343190/article/details/110009147