OpenShift - Apache Maven 학습 2 > OpenShift 자료실

본문 바로가기
사이트 내 전체검색

OpenShift 자료실

OpenShift - Apache Maven 학습 2

페이지 정보

profile_image
작성자 꿈꾸는여행자
댓글 0건 조회 5,769회 작성일 21-04-17 15:13

본문

안녕하세요


Apache Maven 공식 사이트(https://maven.apache.org/index.html) 내용을 기준으로
학습 및 실습한 내용 공유 드립니다.

금주 실습 항목은
Maven in 5 Minutes
https://maven.apache.org/guides/getting-started/maven-in-five-minutes.html
입니다.


감사합니다.

> 아래

Apache Maven
https://maven.apache.org/


________________


5. Maven 사용
5.1. Maven in 5 Minutes
5.1.1. 설치
Maven은 Java 도구이므로 계속하려면 Java가 설치되어 있어야합니다.
먼저 Maven을 다운로드 하고 설치 지침을 따릅니다 . 그런 다음 터미널이나 명령 프롬프트에 다음을 입력하십시오.
mvn --version


설치된 Maven 버전을 출력해야합니다. 예를 들면 다음과 같습니다.
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: D:\apache-maven-3.6.3\apache-maven\bin\..
Java version: 1.8.0_232, vendor: AdoptOpenJDK, runtime: C:\Program Files\AdoptOpenJDK\jdk-8.0.232.09-hotspot\jre
Default locale: en_US, platform encoding: Cp1250
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"


네트워크 설정에 따라 추가 구성이 필요할 수 있습니다. 필요한 경우 Maven 구성 가이드를 확인하세요 .
Windows 를 사용하는 경우 Windows에서 Maven을 사용할 준비가되었는지 확인하려면 Windows 필수 구성 요소 를 살펴 봐야 합니다.
5.1.2. 프로젝트 생성
프로젝트가 상주 할 어딘가에 디렉토리를 만들고 해당 디렉토리에서 쉘을 시작해야합니다. 명령 줄에서 다음 Maven 목표를 실행합니다.
mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false




Maven을 방금 설치했다면 처음 실행할 때 시간이 걸릴 수 있습니다. Maven이 최신 아티팩트 (플러그인 jar 및 기타 파일)를 로컬 저장소에 다운로드하기 때문입니다. 성공하기 전에 명령을 몇 번 실행해야 할 수도 있습니다. 다운로드가 완료되기 전에 원격 서버가 시간 초과 될 수 있기 때문입니다. 걱정하지 마세요. 문제를 해결할 수있는 방법이 있습니다.
생성 목표가 artifactId와 동일한 이름으로 디렉토리를 생성 했음을 알 수 있습니다. 해당 디렉토리로 변경하십시오.
cd my-app


이 디렉토리에서 다음과 같은 표준 프로젝트 구조를 볼 수 있습니다.
my-app
|-- pom.xml
`-- src
    |-- main
    |  `-- java
    |      `-- com
    |          `-- mycompany
    |              `-- app
    |                  `-- App.java
    `-- test
        `-- java
            `-- com
                `-- mycompany
                    `-- app
                        `-- AppTest.java


src/main/java디렉토리는 프로젝트의 소스 코드를 포함하는 src/test/java디렉토리는 테스트 소스를 포함하고 pom.xml파일이 프로젝트의 프로젝트 개체 모델 또는 POM이다.
5.1.2.1. POM
이 pom.xml파일은 Maven에서 프로젝트 구성의 핵심입니다. 원하는 방식으로 프로젝트를 빌드하는 데 필요한 대부분의 정보가 포함 된 단일 구성 파일입니다. POM은 거대하고 복잡 할 수 있지만,이를 효과적으로 사용하기 위해 아직 모든 복잡성을 이해할 필요는 없습니다. 이 프로젝트의 POM은 다음과 같습니다.
1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
2.  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
3.  <modelVersion>4.0.0</modelVersion>
4. 
5.  <groupId>com.mycompany.app</groupId>
6.  <artifactId>my-app</artifactId>
7.  <version>1.0-SNAPSHOT</version>
8. 
9.  <properties>
10.    <maven.compiler.source>1.7</maven.compiler.source>
11.    <maven.compiler.target>1.7</maven.compiler.target>
12.  </properties>
13. 
14.  <dependencies>
15.    <dependency>
16.      <groupId>junit</groupId>
17.      <artifactId>junit</artifactId>
18.      <version>4.12</version>
19.      <scope>test</scope>
20.    </dependency>
21.  </dependencies>
22. </project>


5.1.2.2. 프로젝트 생성 내용 상세
Maven 목표 archetype : generate를 실행하고 해당 목표에 다양한 매개 변수를 전달했습니다. 접두사 archetype 은 목표를 제공하는 플러그인 입니다. Ant 에 익숙하다면 이것을 작업과 유사하게 생각할 수 있습니다. 이 archetype : generate 목표는 maven-archetype-quickstart archetype을 기반으로 간단한 프로젝트를 만들었습니다 . 지금은 플러그인 이 일반적인 목적을 가진 목표 모음 이라고 말하면 충분합니다 . 예를 들어, 목적이 "다양한 jboss 항목 처리"인 jboss-maven-plugin.
5.1.2.3. 프로젝트 구축
mvn package


명령 줄은 다양한 작업을 출력하고 다음으로 끝납니다.
...
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  2.953 s
[INFO] Finished at: 2019-11-24T13:05:10+01:00
[INFO] ------------------------------------------------------------------------


실행 된 첫 번째 명령 ( archetype : generate ) 과 달리 두 번째 명령 은 단순히 단일 단어 패키지 라는 것을 알 수 있습니다 . 오히려보다 목표 , 이것은이다 단계 . 단계는 빌드 수명주기의 한 단계로, 순서가 지정된 단계 시퀀스입니다. 단계가 주어지면 Maven은 정의 된 단계까지 시퀀스의 모든 단계를 실행합니다. 예를 들어 컴파일 단계를 실행하면 실제로 실행되는 단계는 다음과 같습니다.
1. validate
2. generate-sources
3. process-sources
4. generate-resources
5. process-resources
6. compile
다음 명령을 사용하여 새로 컴파일되고 패키징 된 JAR을 테스트 할 수 있습니다.
java -cp target/my-app-1.0-SNAPSHOT.jar com.mycompany.app.App


다음과 같이 표시 됩니다.
Hello World!


5.1.2.4. 실습
* mvn 버전
mvn --version
C:\WINDOWS\system32>mvn --version
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: C:\apache\apache-maven\apache-maven-3.6.3-bin\apache-maven-3.6.3\bin\..
Java version: 1.8.0-262, vendor: OpenLogic-OpenJDK, runtime: C:\Java\openlogic-openjdk-8u262-b10-win-64\jre
Default locale: ko_KR, platform encoding: MS949
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"


C:\Windows\System32>


* Project 생성
mkdir C:\Work\Maven\project1
cd C:\Work\Maven\project1


mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false
...
[INFO] ----------------------------------------------------------------------------
[INFO] Using following parameters for creating project from Archetype: maven-archetype-quickstart:1.4
[INFO] ----------------------------------------------------------------------------
[INFO] Parameter: groupId, Value: com.mycompany.app
[INFO] Parameter: artifactId, Value: my-app
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] Parameter: package, Value: com.mycompany.app
[INFO] Parameter: packageInPathFormat, Value: com/mycompany/app
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] Parameter: package, Value: com.mycompany.app
[INFO] Parameter: groupId, Value: com.mycompany.app
[INFO] Parameter: artifactId, Value: my-app
[INFO] Project created from Archetype in dir: C:\Work\Maven\project1\my-app
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  22.876 s
[INFO] Finished at: 2021-04-17T14:48:58+09:00
[INFO] ------------------------------------------------------------------------


C:\Work\Maven\project1>


* Build Package
cd my-app
mvn package
[INFO] Building jar: C:\Work\Maven\project1\my-app\target\my-app-1.0-SNAPSHOT.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  27.330 s
[INFO] Finished at: 2021-04-17T14:51:30+09:00
[INFO] ------------------------------------------------------------------------


C:\Work\Maven\project1\my-app>


* jar test
java -cp target/my-app-1.0-SNAPSHOT.jar com.mycompany.app.App
C:\Work\Maven\project1\my-app>java -cp target/my-app-1.0-SNAPSHOT.jar com.mycompany.app.App
Hello World!


C:\Work\Maven\project1\my-app>




5.1.3. Java 9 이상
기본적으로 Maven 버전은 maven-compiler-pluginJava 9 이상 버전과 호환되지 않는 이전 버전을 사용할 수 있습니다 . Java 9 이상을 대상으로 지정하려면 최소한 버전 3.6.0을 사용 maven-compiler-plugin하고 대상으로 지정 maven.compiler.release하는 Java 릴리스 (예 : 9, 10, 11, 12 등)로 속성을 설정해야 합니다.
다음 예에서는 버전 3.8.1을 사용 maven-compiler-plugin하고 대상 Java 11 을 사용하도록 Maven 프로젝트를 구성했습니다 .
1.    <properties>
2.        <maven.compiler.release>11</maven.compiler.release>
3.    </properties>
4. 
5.    <build>
6.        <pluginManagement>
7.            <plugins>
8.                <plugin>
9.                    <groupId>org.apache.maven.plugins</groupId>
10.                    <artifactId>maven-compiler-plugin</artifactId>
11.                    <version>3.8.1</version>
12.                </plugin>
13.            </plugins>
14.        </pluginManagement>
15.    </build>


javac의 --release옵션 에 대한 자세한 내용 은 JEP 247을 참조하십시오 .
5.1.4. Maven 도구 실행
5.1.4.1. Maven 단계
포괄적 인 목록은 아니지만 실행되는 가장 일반적인 기본 수명주기 단계입니다.
* validate : 프로젝트가 정확하고 필요한 모든 정보를 사용할 수 있는지 검증합니다.
* compile : 프로젝트의 소스 코드를 컴파일
* test : 적절한 단위 테스트 프레임 워크를 사용하여 컴파일 된 소스 코드를 테스트합니다. 이러한 테스트에서는 코드를 패키지화하거나 배포 할 필요가 없습니다.
* package : 컴파일 된 코드를 가져와 JAR과 같은 배포 가능한 형식으로 패키징합니다.
* integration-test : 통합 테스트를 실행할 수있는 환경으로 필요한 경우 패키지를 처리하고 배포합니다.
* verify : 모든 검사를 실행하여 패키지가 유효하고 품질 기준을 충족하는지 확인합니다.
* install : 다른 프로젝트에서 로컬로 종속성으로 사용하기 위해 패키지를 로컬 저장소에 설치합니다.
* deploy : 통합 또는 릴리스 환경에서 수행되며 다른 개발자 및 프로젝트와 공유하기 위해 최종 패키지를 원격 저장소에 복사합니다.
위의 기본목록 외에 두 가지 다른 Maven 수명주기가 있습니다. 그들은
* clean : 이전 빌드에서 생성 된 아티팩트를 정리합니다.
* site :이 프로젝트에 대한 사이트 문서를 생성 합니다 .
단계는 실제로 기본 목표에 매핑됩니다. 단계별 실행 목표는 프로젝트의 패키징 유형에 따라 다릅니다. 예를 들어 패키지 는 프로젝트 유형이 JAR이면 jar:jar를 실행 하고 프로젝트 유형이 WAR 이면 war:war을 실행 합니다.
주목해야 할 흥미로운 점은 단계와 목표가 순서대로 실행될 수 있다는 것입니다.
mvn clean dependency:copy-dependencies package


이 명령은 프로젝트를 정리하고, 종속성을 복사하고, 프로젝트를 패키징합니다 ( 물론 package 까지 모든 단계를 실행 함 ).
5.1.4.2. 사이트 생성
mvn site


이 단계는 프로젝트의 pom에 대한 정보를 기반으로 사이트를 생성합니다. 에서 생성 된 문서를 볼 수 있습니다 target/site.
5.1.4.3. 실습
* 이전 내용을 삭제후 jar 생성
mvn clean dependency:copy-dependencies package
[INFO] -------------------------------------------------------
[INFO]  T E S T S
[INFO] -------------------------------------------------------
[INFO] Running com.mycompany.app.AppTest
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.06 s - in com.mycompany.app.AppTest
[INFO]
[INFO] Results:
[INFO]
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
[INFO]
[INFO]
[INFO] --- maven-jar-plugin:3.0.2:jar (default-jar) @ my-app ---
[INFO] Building jar: C:\Work\Maven\project1\my-app\target\my-app-1.0-SNAPSHOT.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  9.631 s
[INFO] Finished at: 2021-04-17T15:00:18+09:00
[INFO] ------------------------------------------------------------------------


C:\Work\Maven\project1\my-app>


* site 생성
mvn site
[INFO] Rendering content with org.apache.maven.skins:maven-default-skin:jar:1.2 skin.
[INFO] Generating "Dependencies" report  --- maven-project-info-reports-plugin:3.0.0:dependencies
[INFO] Generating "Dependency Information" report --- maven-project-info-reports-plugin:3.0.0:dependency-info
[INFO] Generating "About" report        --- maven-project-info-reports-plugin:3.0.0:index
[INFO] Generating "Plugin Management" report --- maven-project-info-reports-plugin:3.0.0:plugin-management
[INFO] Generating "Plugins" report      --- maven-project-info-reports-plugin:3.0.0:plugins
[INFO] Generating "Summary" report      --- maven-project-info-reports-plugin:3.0.0:summary
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  47.794 s
[INFO] Finished at: 2021-04-17T15:02:34+09:00
[INFO] ------------------------------------------------------------------------


C:\Work\Maven\project1\my-app>


* site 확인
file:///C:/Work/Maven/project1/my-app/target/site/index.html


 



5.2. Maven Getting Started Guide
그다음 진행
https://maven.apache.org/guides/getting-started/index.html

첨부파일

댓글목록

등록된 댓글이 없습니다.

회원로그인

회원가입

사이트 정보

회사명 : (주)리눅스데이타시스템 / 대표 : 정정모
서울본사 : 서울특별시 강남구 봉은사로 114길 40 홍선빌딩 2층 / tel : 02-6207-1160
대전지사 : 대전광역시 유성구 노은로174 도원프라자 5층 / tel : 042-331-1161

접속자집계

오늘
1,246
어제
1,780
최대
3,935
전체
789,811
Copyright © www.linuxdata.org All rights reserved.