6.1 플러그인 소개

표준 라이프사이클은 Maven 플러그인을 사용하여 기능으로 향상될 수 있습니다. 플러그인을 사용하면 표준 주기(예: 애플리케이션 서버에 배포)에 새 단계를 삽입하거나 기존 단계를 확장할 수 있습니다.

Maven의 플러그인은 특별한 것이 아니라 반대로 가장 일반적이고 자주 접하는 것입니다. 결국 프로젝트 빌드의 미묘한 차이를 설정하려면 pom.xml에 필요한 정보를 지정해야 합니다. 이를 수행하는 유일한 방법은 "플러그인"을 작성하는 것입니다.

플러그인은 종속성만큼이나 아티팩트이기 때문에 거의 동일한 방식으로 설명됩니다. 종속성 섹션 대신 플러그인, 종속성 대신 플러그인, 리포지토리 대신 플러그인 리포지토리, 리포지토리 - 플러그인 리포지토리.

예:

<plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-checkstyle-plugin</artifactId>
        <version>2.6</version>
    </plugin>
</plugins>

pom.xml에서 플러그인을 선언하면 플러그인 버전을 수정하고 필요한 매개변수를 설정하고 다양한 구성 매개변수를 정의하고 단계에 바인딩할 수 있습니다.

즉, Maven은 모든 작업을 수행하는 특정 플러그인을 실행합니다. 즉, 프로젝트의 특수 빌드에 대해 Maven을 가르치려면 pom.xml에 필요한 단계에서 필요한 매개 변수를 사용하여 원하는 플러그인을 시작하라는 표시를 추가해야 합니다 .

사용 가능한 플러그인의 수는 매우 많습니다. maven에서 직접 웹 애플리케이션을 실행하여 브라우저에서 테스트하고 리소스를 생성하는 등의 작업을 수행할 수 있는 다양한 플러그인이 있습니다. 이 상황에서 개발자의 주요 임무는 가장 적절한 플러그인 세트를 찾아 적용하는 것 입니다 .

6.2 라이프 사이클과 플러그인

매우 자주 플러그인은 특정 단계를 실행하는 동안 일종의 콘솔 유틸리티를 실행하는 데 사용됩니다. 또한 일반 Java 클래스(물론 기본 메서드가 있음)를 실행할 수도 있습니다.

예:

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>exec-maven-plugin</artifactId>
  <version>1.2.1</version>
  <executions>
    <execution>
      <goals>
        <goal>java</goal>
      </goals>
    </execution>
  </executions>
  <configuration>
    <mainClass>com.example.Main</mainClass>
    <arguments>
      <argument>first-argument</argument>
      <argument>second-argument</argument>
    </arguments>
  </configuration>
</plugin>

일반적으로 플러그인은 매우 유연하게 구성할 수 있습니다. Maven 개발자의 모든 공식 플러그인은 공식 Maven 웹 사이트에 매우 잘 문서화되어 있습니다. 예를 들어 Apache Maven 프로젝트 페이지의 maven-compiler-plugin 의 경우 플러그인을 제어하는 ​​모든 변수 목록을 볼 수 있습니다. 플러그인에 대한 정보는 링크에서 확인할 수 있습니다.

더 중요한 정보. 다른 플러그인은 수명 주기의 다른 단계에서 Maven에 의해 호출됩니다. 예를 들어, 스윙 Java 데스크톱 애플리케이션을 설명하는 프로젝트는 웹 애플리케이션(war) 개발에 일반적인 것과는 다른 수명 주기 단계를 가집니다.

또는 예를 들어 "mvn test" 명령이 실행되면 프로젝트 수명 주기의 전체 단계가 시작됩니다. "process-resources", "compile", "process-classes", "process-test" -자원”, “테스트-컴파일”, 테스트. Maven이 표시하는 메시지에서 이러한 단계에 대한 언급을 볼 수 있습니다.

[INFO] Scanning for projects...
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources)     @ codegym ---
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile)      @ codegym
[INFO] --- maven-resources-plugin:2.6:testResources         (default-testResources) @ codegym ---
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile)          @ codegym ---
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test)         @ codegym ---
[INFO] Surefire report directory:           t:\ projects\codegym\target\surefire-reports

6.3 Maven의 목표 - 목표

메이븐에는 목표(goal)라는 것도 있다. goal은 Maven 시작 대상과 비슷합니다. 주요 목표는 주요 단계와 일치합니다.

  • 확인;
  • 엮다;
  • 시험;
  • 패키지;
  • 확인하다;
  • 설치하다;
  • 배포합니다.

프로젝트 수명 주기의 각 단계에서 여러 목표(목표)를 포함하는 특정 플러그인(jar-library)이 호출됩니다.

예를 들어 "maven-compiler-plugin" 플러그인에는 프로젝트의 기본 소스 코드를 컴파일하기 위한 compiler:compile과 테스트 컴파일을 위한 compiler:testCompile의 두 대상이 포함되어 있습니다. 거의 필요하지 않지만 공식적으로 단계 목록을 변경할 수 있습니다.

특정 단계에서 일부 비표준 작업을 수행해야 하는 경우 pom.xml에 적절한 플러그인을 추가하기만 하면 됩니다.

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>Name-plugin</artifactId>
  <executions>
    <execution>
      <id>customTask</id>
      <phase>generate-sources</phase>
      <goals>
        <goal>pluginGoal</goal>
      </goals>
    </execution>
  </executions>
</plugin>

이 경우 가장 중요한 것은 플러그인 "goal"의 목표에 대한 호출을 포함해야 하는 "실행/단계" 단계의 이름을 플러그인에 대해 정의하는 것입니다. 예를 들어 xml을 기반으로 Java 코드를 생성해야 합니다. 그런 다음 "generate-sources" 단계가 필요합니다. 이 단계는 컴파일 단계를 호출하기 전에 배치되며 프로젝트 소스의 일부를 생성하는 데 이상적입니다.