Maven의 기본 기능을 자체 구현으로 대체해야하며이를 수행 할 수있는 확실한 방법을 찾고 있습니다.Maven 3에서 Plexus 구성 요소를 대체하십시오.
나는 org.apache.maven.repository.internal.DefaultVersionRangeResolver
확장하고 다음과 같이 component.xml를 사용하여 내 확장 된 구성 요소를 등록 :
<component-set>
<components>
<component>
<role>org.sonatype.aether.impl.VersionRangeResolver</role>
<role-hint>default</role-hint>
<implementation>com.my.custom.VersionRangeResolver
</implementation>
<isolated-realm>false</isolated-realm>
<requirements>
<requirement>
<role>org.sonatype.aether.spi.log.Logger</role>
<role-hint />
<field-name>logger</field-name>
</requirement>
<requirement>
<role>org.sonatype.aether.spi.log.Logger</role>
<role-hint />
<field-name>logger2</field-name>
</requirement>
<requirement>
<role>org.sonatype.aether.impl.MetadataResolver</role>
<role-hint />
<field-name>metadataResolver</field-name>
</requirement>
</requirements>
</component>
</components>
</component-set>
내가 내 로컬 REPO이 포함 된 프로젝트를 설치, 나는 다른 프로젝트의이 같은이를 참조 pom.xml :
<build>
<extensions>
<extension>
<groupId>my.groupId</groupId>
<artifactId>maven-version-resolver</artifactId>
<version>SNAPSHOT</version>
</extension>
</extensions>
</build>
그러나 내 인공물은 사용되지 않습니다. 내가 빌드 안쪽이 작은 GMaven 그루비 스크립트를 실행하면 :
session.container.getComponentDescriptorList(
'org.sonatype.aether.impl.VersionRangeResolver'
).each{
println "Role Hint: ${it.roleHint}, implementation: ${it.implementation}" ;
}
그것은 힌트 '기본'과 저 모두 기본 구현과 내 자신의 구현을 모두 보여줍니다. 어떻게 해결할 수 있을까요?
- components.xml에 추가 매개 변수를 설정해야합니까 (더 높은 우선 순위).
- 구성 요소를 Maven 플러그인으로 작성해야하며 프로그래밍 방식으로 구성 요소를 적극 등록해야합니까?
- 이 문제를 다루는 Plexus 설명서가 있습니까?
안녕하세요, Maven 3.3 확장 메커니즘으로 시도해 보셨습니까? 핵심 메커니즘을 확장 할 수도 있습니다. – splatch
@splatch 왜 대답으로 추가하지 않습니까? –
여전히 예상대로 작동하지 않습니다. http://mail-archives.apache.org/mod_mbox/maven-users/201701.mbox/%[email protected].com%3E – splatch