Using Extensions
和
Core Classloader
,我们可以覆盖
${maven.home}/lib
通过定义
extensions
pom.xml
具体如下:-
pom.xml文件
<build>
<extensions>
<extension>
<groupId>javax.annotation</groupId>
<artifactId>javax.annotation-api</artifactId>
<version>1.3.2</version>
</extension>
<extension>
<groupId>javax.annotation</groupId>
<artifactId>jsr250-api</artifactId>
<version>1.0</version>
</extension>
</extensions>
</build>
在执行
mvn -e -X clean test
,它给了我们以下信息:-
[DEBUG] javax.annotation:javax.annotation-api:jar:1.3.2:
[DEBUG] org.codehaus.plexus:plexus-utils:jar:1.1:runtime
[DEBUG] Created new class realm extension>
javax.annotation:javax.annotation-api:1.3.2
[DEBUG] Importing foreign packages into class realm extension>
javax.annotation:javax.annotation-api:1.3.2
[DEBUG] Imported: < maven.api
[DEBUG] Populating class realm extension>
javax.annotation:javax.annotation-api:1.3.2
[DEBUG] Included: javax.annotation:javax.annotation-api:jar:1.3.2
[DEBUG] Included: org.codehaus.plexus:plexus-utils:jar:1.1
[DEBUG] Dependency collection stats: {...}
[DEBUG] javax.annotation:jsr250-api:jar:1.0:
[DEBUG] org.codehaus.plexus:plexus-utils:jar:1.1:runtime
[DEBUG] Created new class realm extension>
javax.annotation:jsr250-api:1.0
[DEBUG] Importing foreign packages into class realm extension>
javax.annotation:jsr250-api:1.0
[DEBUG] Imported: < maven.api
[DEBUG] Populating class realm extension>
javax.annotation:jsr250-api:1.0
....
[DEBUG] Extension realms for project some-group:some-artifact:some-packing:some-version :
[ClassRealm[extension>javax.annotation:javax.annotation-api:1.3.2,
parent: sun.misc.Launcher$AppClassLoader@5c647e05],
ClassRealm[extension>javax.annotation:jsr250-api:1.0,
parent: sun.misc.Launcher$AppClassLoader@5c647e05]]
[DEBUG] Created new class realm project>some-group:some-artifact:some-version
[DEBUG] Populating class realm project>some-group:some-artifact:some-version
[DEBUG] Included: javax.annotation:javax.annotation-api:jar:1.3.2
[DEBUG] Looking up lifecycle mappings for packaging war from
ClassRealm[project>some-group:some-artifact:some-version,
parent: ClassRealm[maven.api, parent: null]]
注意
javax.annotation:jsr250-api:1.0
,然后我把它放在
javax.annotation:javax.annotation-api:1.3.2
javax.a公司nnotation:javax.annotation-api:1.3.2
将首先使用。