플러그인을 사용하여 Maven을 통해 슬랙 메시지를 보내고 있습니다. 빌드가 실패했을 때 플러그인을 사용할 수 있다면 자동으로 실패한 빌드에 대한 알림을받을 수 있는지 궁금합니다.빌드가 실패 할 때 Maven 플러그인을 실행하십시오.
답변
Maven 3.0.2에서 내장 된 EventSpy
메커니즘을 통해 Maven 자체 내에서 그렇게 할 수 있습니다. 빌드의 각 단계에서 Maven 자체 또는 사용자 정의 코드에 의해 여러 이벤트가 발생하며 이러한 이벤트를 수신하여 일부 작업을 수행 할 수 있습니다. Maven에 의해 발생 된 실행 이벤트는 ExecutionEvent
클래스로 표현됩니다. 각 이벤트의 제목은 a type이며, 표시되는 이벤트의 종류는 project failure, Mojo failure, project skipped 등입니다.이 경우 프로젝트 실패 이벤트가 귀하가 찾고자하는 이벤트입니다.
이벤트에 대한 맞춤 스파이는 EventSpy
인터페이스를 구현하는 자바 클래스 일뿐입니다. 바람직하게는 AbstractEventSpy
헬퍼 클래스를 상속 받아야합니다. 예를 들어, 새 프로젝트를 생성하고, 패키지에 따라 다음과 같은 자바 클래스를 추가 (의이 my-spy
를 호출하자) :
import org.apache.maven.eventspy.AbstractEventSpy;
import org.apache.maven.eventspy.EventSpy;
import org.apache.maven.execution.ExecutionEvent;
import org.codehaus.plexus.component.annotations.Component;
import org.codehaus.plexus.component.annotations.Requirement;
import org.codehaus.plexus.logging.Logger;
@Component(role = EventSpy.class)
public class BuildFailureEventSpy extends AbstractEventSpy {
@Requirement
private Logger logger;
@Override
public void onEvent(Object event) throws Exception {
if (event instanceof ExecutionEvent) {
ExecutionEvent executionEvent = (ExecutionEvent) event;
if (executionEvent.getType() == ExecutionEvent.Type.ProjectFailed) {
logger.info("My spy detected a build failure, do the necessary here!");
}
}
}
}
이 코드는 단순히 @Component
주석 '은 신경 얼기를 통해 스파이를 등록하고 메시지 때를 기록 프로젝트를 구축하지 못했습니다. 해당 클래스를 컴파일하려면 my-spy
프로젝트에 Maven Core에 대한 종속성과 plexus-component-metadata
플러그인 실행을 추가하여 해당 구성 요소에 맞는 Plexus 메타 데이터를 만들어야합니다. 이 프로젝트는 컴파일 (mvn clean install
을 통해) 당신의 로컬 저장소에 설치되면
<dependencies>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-core</artifactId>
<version>3.0.2</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-component-metadata</artifactId>
<version>1.6</version>
<executions>
<execution>
<goals>
<goal>generate-metadata</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
, 당신은 core extensions mechanism을 통해 다른 프로젝트의 빌드에 추가 할 수 있습니다.
Maven 3.3.1 이전에는 Maven이 찾을 수 있도록 ${MAVEN_HOME}/lib/ext
폴더에 my-spy
JAR을 넣어야했습니다. 3.3.1부터는 Maven 설치를 할 필요가 없으며 프로젝트 기본 디렉토리 (${maven.multiModuleProjectDirectory}/.mvn/extensions.xml
)에 .mvn/extensions.xml
파일을 생성 할 수 있습니다. 그 내용은 spy 프로젝트의 Maven 좌표를 가리키는 확장을 선언 한 것일 뿐이므로
<?xml version="1.0" encoding="UTF-8"?>
<extensions>
<extension>
<groupId>my.spy</groupId>
<artifactId>my-spy</artifactId>
<version>0.0.1</version>
</extension>
</extensions>
일 것입니다. Maven (≥ 3.3.1)은 기본적으로 해당 파일을 검색하므로 스파이가 올바르게 등록되고 빌드하는 동안 호출됩니다.
남은 일은 스파이가해야 할 일을 코드하는 것입니다. 귀하의 경우 Maven 플러그인을 호출해야하므로 매우 쉽게 할 수있는 Mojo Executor 라이브러리를 살펴보십시오.
- 1. 에스프레소가 실패 할 때 세트 빌드가 실패했습니다
- 2. Maven 재 구축 실패, 빌드가 완료되지 않는다.
- 3. Maven : 명령 행 플래그가있는 경우에만 플러그인을 실행하십시오.
- 4. 빌드가 실패 할 때 느슨하게 알림을받는 방법?
- 5. 조건부로 메이븐 플러그인을 실행하십시오.
- 6. 중복 종속성에 실패 할 때 Maven 빌드를 얻으려면 어떻게해야합니까?
- 7. maven-site-plugin으로 사이트를 생성 할 때 빌드가 실패했습니다.
- 8. FileChooser 플러그인을 추가 할 때 Cordova 빌드가 충돌 함
- 9. TFS 빌드가 실패 함
- 10. 아티팩트를 다운로드 할 때 Maven 빌드가 연결 재설정 됨
- 11. 스칼라 빌드가 실패 했습니까?
- 12. Java와 함께 Scalatest를 포함 할 때 Maven 빌드가 실패합니다.
- 13. 잘못된 repo에서 itext를 다운로드 할 때 왜 Maven 빌드가 실패합니까?
- 14. Jenkins Pipeline : 빌드가 실패 할 때 아티팩트를 보관하는 방법은 무엇입니까?
- 15. 다른 빌드가 실패 할 때 빌드를 방지하는 방법은 무엇입니까?
- 16. JUnit 테스트가 실패 할 때 빌드가 실패하게하는 방법은 무엇입니까?
- 17. 빌드가 실패 할 때 Jenkins에서 QC 결함 생성
- 18. Appharbor를 사용하면 빌드가 실패 할 때 이메일을받을 수 있습니까?
- 19. Maven 빌드가 실행되지 않음
- 20. SpringBoot Maven 빌드가 실패합니다.
- 21. 얻기 빌드가 실패
- 22. Maven 플러그인을 호출하기위한 Maven 플러그인?
- 23. Android Studio 빌드가 실패 할 때마다 시도합니다.
- 24. maven 빌드에서 testng 테스트를 수행하기 전에 antrun 플러그인을 실행하십시오.
- 25. 의존성 플러그인을 maven 의존성 플러그인과 함께 한 번만 실행하십시오.
- 26. maven 2 플러그인을 사용하여 프로젝트를 패키징하지 않고 부두를 실행하십시오.
- 27. ChildBrowser에서 네이티브 플러그인을 실행하십시오.
- 28. struts2 쇼케이스에서 Maven 빌드가 실패했습니다.
- 29. maven glassfish 플러그인을 대체 할 수 있습니까?
- 30. Tycho 빌드가 Java 6에서 실패 함
빌드 서버에서 알려주는 것이 쉽지 않은가요? –
@JF Meier 좋은 지적, 우리는 앞으로 그것을 할 것입니다. 그러나 그럼에도 불구하고, 나는 가능한 한 묻지 않고있는 것이 아닌가? – Jelle