앞서 Maven 에서 많이 사용되는 phase 를 살펴보았다.
이런 메이븐 페이즈 또한 메이븐 플러그인을 통해 실질적인 작업이 실행된다.
( 즉 모든 기능은 플러긴 기반이다. )
많이 사용되는 plugins
앞서 phase 에서 사용되었던 동작들이 정의된 plugin 이 많이 사용된다.
메이븐 플러그인 정의
메이븐 플러그인 실행
- 메이븐은 하나에 플러그인에서 실행할 수 있는 여러 작업들이 있다.
- 이 각각의 작업을 골 ( goal ) 이라고 정의한다.
- 하나의 플러그인에 여러개의 골이 있다.
- 플러그인을 mvn groupId:artifactId:version:goal 로 해당 goal 을 실행시킬수 있다.
mvn org.apache.maven.plugins : maven-compiler-plugin : 2.1 : compile
- 로컬 저장소에 설치된 가장 최신 버전의 플러그인을 실행한다면 version 은 생략 가능하다.
mvn org.apache.maven.plugins : maven-compiler-plugin : compile
- maven - $name - plugin 순서의 artifactId 를 가지면 $name 만 쓸수 있다.
mvn org.apache.maven.plugins : compiler : compile
- groupId 가 MAVEN_HOME/conf/settings.xml 이나 USERS/.m2/setting.xml 에서
아래와 같이 설정되면 groupId 생략가능하다.
mvn compiler : compile
되돌아보기
앞서 실행한 두 goal 도 실제로는 아래와 같은 정보를 포함하고 있다.
archetype:generate
groupId : org.apache.maven.plugins
artifactId : maven-archetype-plugin
goal : generate
help:effective-pom
groupId : org.apache.maven.plugins
artifactId : maven-help-plugin
goal : effective-pom
Example
아래 명령으로 Maven Project 를 만들면 pom.xml 에 plugins 정보를 포함되어 generate 된다.
mvn archetype:generate
-DgroupId=com.mycompany.app
-DartifactId=plugin-app
-Dversion=1.0
-DpackageName=com.mycompany.app
-DarchetypeGroupId=org.apache.maven.archetypes
-DarchetypeArtifactId=maven-archetype-quickstart
-DinteractiveMode=false
|
해당 pom.xml 의 결과는 아래와 같으며 사용되는 plugins 이 확인 가능하다.
<?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"
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany.app</groupId>
<artifactId>plugin-app</artifactId>
<version>1.0</version>
<name>plugin-app</name>
<!-- FIXME change it to the project's website -->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
<plugins>
<!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle -->
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.1.0</version>
</plugin>
<!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version>
</plugin>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>
<!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle -->
<plugin>
<artifactId>maven-site-plugin</artifactId>
<version>3.7.1</version>
</plugin>
<plugin>
<artifactId>maven-project-info-reports-plugin</artifactId>
<version>3.0.0</version>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
|
'Build > Maven' 카테고리의 다른 글
09. pom aggregation&inheritance (0) | 2020.01.23 |
---|---|
08. Maven Repository (0) | 2020.01.23 |
06. Maven phase (0) | 2020.01.23 |
05. Maven POM.xml (0) | 2020.01.23 |
04. Maven 기본 명령어 (0) | 2020.01.23 |