Java源码示例:org.codehaus.plexus.DefaultPlexusContainer
示例1
private InitializeMojo createMojoInstance() throws PlexusContainerException {
InitializeMojo mojo = new InitializeMojo();
mojo.project = new MavenProject();
mojo.repositorySystem = new DefaultRepositorySystem();
mojo.repositorySystemSession = new DefaultRepositorySystemSession();
mojo.buildPluginManager = new DefaultBuildPluginManager();
mojo.container = new DefaultPlexusContainer(new DefaultContainerConfiguration());
mojo.mavenSession = new MavenSession(mojo.container, mojo.repositorySystemSession, new DefaultMavenExecutionRequest(),
new DefaultMavenExecutionResult());
mojo.lifecycleExecutor = new DefaultLifecycleExecutor();
mojo.scmManager = new DefaultScmManager();
mojo.remoteRepositories = Collections.emptyList();
mojo.projectBuildDir = OUT.getAbsolutePath();
Build build = new Build();
build.setOutputDirectory(OUT.getAbsolutePath());
mojo.project.setBuild(build);
return mojo;
}
示例2
public static @NonNull MavenEmbedder createProjectLikeEmbedder() throws PlexusContainerException {
final String mavenCoreRealmId = "plexus.core";
ContainerConfiguration dpcreq = new DefaultContainerConfiguration()
.setClassWorld( new ClassWorld(mavenCoreRealmId, EmbedderFactory.class.getClassLoader()) )
.setClassPathScanning( PlexusConstants.SCANNING_INDEX )
.setName("maven");
DefaultPlexusContainer pc = new DefaultPlexusContainer(dpcreq, new ExtensionModule());
pc.setLoggerManager(new NbLoggerManager());
Properties userprops = new Properties();
userprops.putAll(getCustomGlobalUserProperties());
EmbedderConfiguration configuration = new EmbedderConfiguration(pc, cloneStaticProps(), userprops, true, getSettingsXml());
try {
return new MavenEmbedder(configuration);
//MEVENIDE-634 make all instances non-interactive
// WagonManager wagonManager = (WagonManager) embedder.getPlexusContainer().lookup(WagonManager.ROLE);
// wagonManager.setInteractive(false);
} catch (ComponentLookupException ex) {
throw new PlexusContainerException(ex.toString(), ex);
}
}
示例3
@Override
protected Object createTest()
throws Exception
{
final TestClass testClass = getTestClass();
final DefaultContainerConfiguration config = new DefaultContainerConfiguration();
// setAutoWiring is set implicitly by below.
config.setClassPathScanning( PlexusConstants.SCANNING_ON );
config.setComponentVisibility( PlexusConstants.GLOBAL_VISIBILITY );
config.setName( testClass.getName() );
final DefaultPlexusContainer container = new DefaultPlexusContainer( config );
final ClassSpace cs = new URLClassSpace( Thread.currentThread().getContextClassLoader() );
container.addPlexusInjector( Collections.<PlexusBeanModule>singletonList( new PlexusAnnotatedBeanModule( cs, Collections.emptyMap() ) ) );
return container.lookup( testClass.getJavaClass() );
}
示例4
@SuppressWarnings( "deprecation" )
private ManipulationSession createUpdateSession() throws Exception
{
ManipulationSession session = new ManipulationSession();
final Properties p = new Properties();
p.setProperty( "strictAlignment", "true" );
p.setProperty( "strictViolationFails", "true" );
p.setProperty( "versionSuffix", "redhat-1" );
p.setProperty( "scanActiveProfiles", "true" );
session.setState( new DependencyState( p ) );
session.setState( new VersioningState( p ) );
session.setState( new CommonState( p ) );
final MavenExecutionRequest req =
new DefaultMavenExecutionRequest().setUserProperties( p ).setRemoteRepositories( Collections.emptyList() );
final PlexusContainer container = new DefaultPlexusContainer();
final MavenSession mavenSession = new MavenSession( container, null, req, new DefaultMavenExecutionResult() );
session.setMavenSession( mavenSession );
return session;
}
示例5
@SuppressWarnings( "deprecation" )
private ManipulationSession createUpdateSession() throws Exception
{
ManipulationSession session = new ManipulationSession();
session.setState( new DependencyState( p ) );
session.setState( new VersioningState( p ) );
session.setState( new CommonState( p ) );
final MavenExecutionRequest req =
new DefaultMavenExecutionRequest().setUserProperties( p ).setRemoteRepositories( Collections.emptyList() );
final PlexusContainer container = new DefaultPlexusContainer();
final MavenSession mavenSession = new MavenSession( container, null, req, new DefaultMavenExecutionResult() );
session.setMavenSession( mavenSession );
return session;
}
示例6
static MavenProject createMavenProject(Path pomFile, RepositorySystemSession session)
throws MavenRepositoryException {
// MavenCli's way to instantiate PlexusContainer
ClassWorld classWorld =
new ClassWorld("plexus.core", Thread.currentThread().getContextClassLoader());
ContainerConfiguration containerConfiguration =
new DefaultContainerConfiguration()
.setClassWorld(classWorld)
.setRealm(classWorld.getClassRealm("plexus.core"))
.setClassPathScanning(PlexusConstants.SCANNING_INDEX)
.setAutoWiring(true)
.setJSR250Lifecycle(true)
.setName("linkage-checker");
try {
PlexusContainer container = new DefaultPlexusContainer(containerConfiguration);
MavenExecutionRequest mavenExecutionRequest = new DefaultMavenExecutionRequest();
ProjectBuildingRequest projectBuildingRequest =
mavenExecutionRequest.getProjectBuildingRequest();
projectBuildingRequest.setRepositorySession(session);
// Profile activation needs properties such as JDK version
Properties properties = new Properties(); // allowing duplicate entries
properties.putAll(projectBuildingRequest.getSystemProperties());
properties.putAll(OsProperties.detectOsProperties());
properties.putAll(System.getProperties());
projectBuildingRequest.setSystemProperties(properties);
ProjectBuilder projectBuilder = container.lookup(ProjectBuilder.class);
ProjectBuildingResult projectBuildingResult =
projectBuilder.build(pomFile.toFile(), projectBuildingRequest);
return projectBuildingResult.getProject();
} catch (PlexusContainerException | ComponentLookupException | ProjectBuildingException ex) {
throw new MavenRepositoryException(ex);
}
}
示例7
private void initIndexer () {
if (!inited) {
try {
ContainerConfiguration config = new DefaultContainerConfiguration();
//#154755 - start
ClassLoader indexerLoader = NexusRepositoryIndexerImpl.class.getClassLoader();
ClassWorld classWorld = new ClassWorld();
ClassRealm plexusRealm = classWorld.newRealm("plexus.core", EmbedderFactory.class.getClassLoader()); //NOI18N
plexusRealm.importFrom(indexerLoader, "META-INF/sisu"); //NOI18N
plexusRealm.importFrom(indexerLoader, "org.apache.maven.index"); //NOI18N
plexusRealm.importFrom(indexerLoader, "org.netbeans.modules.maven.indexer"); //NOI18N
config.setClassWorld(classWorld);
config.setClassPathScanning( PlexusConstants.SCANNING_INDEX );
//#154755 - end
embedder = new DefaultPlexusContainer(config);
ComponentDescriptor<ArtifactContextProducer> desc = new ComponentDescriptor<ArtifactContextProducer>();
desc.setRoleClass(ArtifactContextProducer.class);
desc.setImplementationClass(CustomArtifactContextProducer.class);
ComponentRequirement req = new ComponentRequirement(); // XXX why is this not automatic?
req.setFieldName("mapper");
req.setRole(ArtifactPackagingMapper.class.getName());
desc.addRequirement(req);
embedder.addComponentDescriptor(desc);
indexer = embedder.lookup(Indexer.class);
searcher = embedder.lookup(SearchEngine.class);
remoteIndexUpdater = embedder.lookup(IndexUpdater.class);
contextProducer = embedder.lookup(ArtifactContextProducer.class);
scanner = new FastScanner(contextProducer);
inited = true;
} catch (Exception x) {
Exceptions.printStackTrace(x);
}
}
}
示例8
public IndexQuerier() throws PlexusContainerException, ComponentLookupException {
DefaultContainerConfiguration config = new DefaultContainerConfiguration();
config.setClassPathScanning(PlexusConstants.SCANNING_INDEX);
this.plexusContainer = new DefaultPlexusContainer(config);
// lookup the indexer components from plexus
this.indexer = plexusContainer.lookup(Indexer.class);
this.indexUpdater = plexusContainer.lookup(IndexUpdater.class);
// lookup wagon used to remotely fetch index
this.httpWagon = plexusContainer.lookup(Wagon.class, "https");
}
示例9
@Override
protected void customizeContainer(PlexusContainer container)
{
((DefaultPlexusContainer)container).setLoggerManager(
new BaseLoggerManager()
{
@Override
protected org.codehaus.plexus.logging.Logger createLogger(String s)
{
return new Slf4jLogger(LOG);
}
}
);
}
示例10
@Test
public void testOverrideWithTemp() throws Exception
{
final File base = TestUtils.resolveFileResource( "groovy-project-removal", "" );
final File root = temporaryFolder.newFolder();
FileUtils.copyDirectory( base, root);
final DefaultContainerConfiguration config = new DefaultContainerConfiguration();
config.setClassPathScanning( PlexusConstants.SCANNING_ON );
config.setComponentVisibility( PlexusConstants.GLOBAL_VISIBILITY );
config.setName( "PME-CLI" );
final PlexusContainer container = new DefaultPlexusContainer( config);
final PomIO pomIO = container.lookup( PomIO.class );
final List<Project> projects = pomIO.parseProject( new File( root, "pom.xml" ) );
assertThat( projects.size(), equalTo(3) );
BaseScriptImplTest impl = new BaseScriptImplTest();
Properties p = new Properties( );
p.setProperty( "versionIncrementalSuffix", "temporary-redhat" );
p.setProperty( "restRepositoryGroup", "GroovyWithTemporary" );
p.setProperty( "restURL", mockServer.getUrl() );
impl.setValues(pomIO, null, null, TestUtils.createSession( p ), projects, projects.get( 0 ), InvocationStage.FIRST );
impl.overrideProjectVersion( SimpleProjectVersionRef.parse( "org.goots:sample:1.0.0" ) );
}
示例11
@Test
public void testTempOverrideWithNonTemp() throws Exception
{
final File base = TestUtils.resolveFileResource( "profile.pom", "" );
final File root = temporaryFolder.newFolder();
final File target = new File ( root, "profile.xml");
FileUtils.copyFile( base, target);
final DefaultContainerConfiguration config = new DefaultContainerConfiguration();
config.setClassPathScanning( PlexusConstants.SCANNING_ON );
config.setComponentVisibility( PlexusConstants.GLOBAL_VISIBILITY );
config.setName( "PME-CLI" );
final PlexusContainer container = new DefaultPlexusContainer( config);
final PomIO pomIO = container.lookup( PomIO.class );
final List<Project> projects = pomIO.parseProject( target );
assertThat( projects.size(), equalTo(1) );
BaseScriptImplTest impl = new BaseScriptImplTest();
Properties p = new Properties( );
p.setProperty( "versionIncrementalSuffix", "temporary-redhat" );
p.setProperty( "restRepositoryGroup", "GroovyWithTemporary" );
p.setProperty( "restURL", mockServer.getUrl() );
impl.setValues(pomIO, null, null, TestUtils.createSession( p ), projects, projects.get( 0 ), InvocationStage.FIRST );
impl.overrideProjectVersion( SimpleProjectVersionRef.parse( "org.goots:testTempOverrideWithNonTemp:1.0.0" ) );
assertEquals( "redhat-5",
impl.getUserProperties().getProperty( VersioningState.VERSION_SUFFIX_SYSPROP ) );
}
示例12
@Test
public void shouldRemoveProjectInGroovyScript() throws Exception
{
final File groovy = TestUtils.resolveFileResource( "groovy-project-removal", "manipulation.groovy" );
final File base = TestUtils.resolveFileResource( "groovy-project-removal", "" );
final File root = tf.newFolder();
FileUtils.copyDirectory( base, root );
final File projectroot = new File ( root, "pom.xml");
final DefaultContainerConfiguration config = new DefaultContainerConfiguration();
config.setClassPathScanning( PlexusConstants.SCANNING_ON );
config.setComponentVisibility( PlexusConstants.GLOBAL_VISIBILITY );
config.setName( "PME-CLI" );
PlexusContainer container = new DefaultPlexusContainer( config );
PomIO pomIO = container.lookup( PomIO.class );
List<Project> projects = pomIO.parseProject( projectroot );
assertThat( projects.size(), equalTo( 3 ) );
Properties userProperties = new Properties();
userProperties.setProperty( "versionIncrementalSuffix", "rebuild" );
userProperties.setProperty( "groovyScripts", groovy.toURI().toString() );
TestUtils.SMContainer smc = TestUtils.createSessionAndManager( userProperties );
smc.getRequest().setPom( projectroot );
smc.getManager().scanAndApply( smc.getSession() );
// re-read the projects:
projects = pomIO.parseProject( projectroot );
assertThat( projects.size(), equalTo( 3 ) );
assertEquals( 1, projectForArtifactId( projects, "groovy-project-removal").getModel().getProfiles().size() );
assertThat( projectForArtifactId( projects, "groovy-project-removal" ).getVersion(), containsString( "rebuild" ) );
assertThat( projectForArtifactId( projects, "groovy-project-removal-moduleA" ).getVersion(),
containsString( "rebuild" ) );
// moduleB was removed from projects by the groovy script and therefore should not be reversioned:
assertThat( projectForArtifactId( projects, "groovy-project-removal-moduleB" ).getVersion(), equalTo( "1.0.0" ) );
}
示例13
private void setMavenSession()
throws Exception
{
final MavenExecutionRequest req =
new DefaultMavenExecutionRequest().setUserProperties( userCliProperties )
.setRemoteRepositories( Collections.emptyList() );
final PlexusContainer container = new DefaultPlexusContainer();
final MavenSession mavenSession = new MavenSession( container, null, req, new DefaultMavenExecutionResult() );
session.setMavenSession( mavenSession );
}
示例14
private RepositorySystem newRepositorySystem() throws PlexusContainerException, ComponentLookupException {
return new DefaultPlexusContainer().lookup(RepositorySystem.class);
}
示例15
@NonNull static MavenEmbedder createOnlineEmbedder() throws PlexusContainerException {
final String mavenCoreRealmId = "plexus.core";
ContainerConfiguration dpcreq = new DefaultContainerConfiguration()
.setClassWorld( new ClassWorld(mavenCoreRealmId, EmbedderFactory.class.getClassLoader()) )
.setClassPathScanning( PlexusConstants.SCANNING_INDEX )
.setName("maven");
DefaultPlexusContainer pc = new DefaultPlexusContainer(dpcreq);
pc.setLoggerManager(new NbLoggerManager());
Properties userprops = new Properties();
userprops.putAll(getCustomGlobalUserProperties());
EmbedderConfiguration req = new EmbedderConfiguration(pc, cloneStaticProps(), userprops, false, getSettingsXml());
// //TODO remove explicit activation
// req.addActiveProfile("netbeans-public").addActiveProfile("netbeans-private"); //NOI18N
// req.setConfigurationCustomizer(new ContainerCustomizer() {
//
// public void customize(PlexusContainer plexusContainer) {
// //MEVENIDE-634
// ComponentDescriptor desc = plexusContainer.getComponentDescriptor(KnownHostsProvider.ROLE, "file"); //NOI18N
// desc.getConfiguration().getChild("hostKeyChecking").setValue("no"); //NOI18N
//
// //MEVENIDE-634
// desc = plexusContainer.getComponentDescriptor(KnownHostsProvider.ROLE, "null"); //NOI18N
// desc.getConfiguration().getChild("hostKeyChecking").setValue("no"); //NOI18N
// }
// });
try {
return new MavenEmbedder(req);
//MEVENIDE-634 make all instances non-interactive
// WagonManager wagonManager = (WagonManager) embedder.getPlexusContainer().lookup(WagonManager.ROLE);
// wagonManager.setInteractive(false);
} catch (ComponentLookupException ex) {
throw new PlexusContainerException(ex.toString(), ex);
}
// try {
// //MEVENIDE-634 make all instances non-interactive
// WagonManager wagonManager = (WagonManager) embedder.getPlexusContainer().lookup(WagonManager.ROLE);
// wagonManager.setInteractive( false );
// wagonManager.setDownloadMonitor(new ProgressTransferListener());
// } catch (ComponentLookupException ex) {
// ErrorManager.getDefault().notify(ex);
// }
}
示例16
@PostConstruct
public void initialize()
throws PlexusSisuBridgeException
{
DefaultContainerConfiguration conf = new DefaultContainerConfiguration();
conf.setAutoWiring( containerAutoWiring );
conf.setClassPathScanning( containerClassPathScanning );
conf.setComponentVisibility( containerComponentVisibility );
conf.setContainerConfigurationURL( overridingComponentsXml );
ClassWorld classWorld = new ClassWorld();
ClassLoader tccl = Thread.currentThread().getContextClassLoader();
containerRealm = new ClassRealm( classWorld, "maven", tccl );
// olamy hackhish but plexus-sisu need a URLClassLoader with URL filled
if ( tccl instanceof URLClassLoader )
{
URL[] urls = ( (URLClassLoader) tccl ).getURLs();
for ( URL url : urls )
{
containerRealm.addURL( url );
log.debug("Added url {}", url);
}
}
conf.setRealm( containerRealm );
//conf.setClassWorld( classWorld );
ClassLoader ori = Thread.currentThread().getContextClassLoader();
try
{
Thread.currentThread().setContextClassLoader( containerRealm );
InternalBinder binder = new InternalBinder( );
plexusContainer = new DefaultPlexusContainer( conf, binder );
}
catch ( PlexusContainerException e )
{
throw new PlexusSisuBridgeException( e.getMessage(), e );
} catch (Throwable ex) {
log.error("PlexusSisuBridge initialization failed {}", ex.getMessage(), ex);
throw new PlexusSisuBridgeException( ex.getMessage(), ex );
}
finally
{
Thread.currentThread().setContextClassLoader( ori );
}
}
示例17
@SuppressWarnings( "deprecation" )
private VersioningState setupSession( final Properties properties, final Map<ProjectRef, String[]> versionMap )
throws Exception
{
// Originally the default used to be 0, this was changed to be 5 but this affects this test suite so revert
// just for these tests.
if ( ! properties.containsKey( VersioningState.INCREMENT_SERIAL_SUFFIX_PADDING_SYSPROP ) )
{
properties.setProperty( VersioningState.INCREMENT_SERIAL_SUFFIX_PADDING_SYSPROP, "0" );
}
final ArtifactRepository ar =
new MavenArtifactRepository( "test", TestUtils.MVN_CENTRAL, new DefaultRepositoryLayout(),
new ArtifactRepositoryPolicy(), new ArtifactRepositoryPolicy() );
final MavenExecutionRequest req =
new DefaultMavenExecutionRequest().setUserProperties( properties )
.setRemoteRepositories( Collections.singletonList( ar ) );
final PlexusContainer container = new DefaultPlexusContainer();
final MavenSession mavenSession = new MavenSession( container, null, req, new DefaultMavenExecutionResult() );
session = new ManipulationSession();
session.setMavenSession( mavenSession );
final VersioningState state = new VersioningState( properties );
session.setState( state );
final Map<String, byte[]> dataMap = new HashMap<>();
if ( versionMap != null && !versionMap.isEmpty() )
{
for ( final Map.Entry<ProjectRef, String[]> entry : versionMap.entrySet() )
{
final String path = toMetadataPath( entry.getKey() );
final byte[] data = setupMetadataVersions( entry.getValue() );
dataMap.put( path, data );
}
}
final Location mdLoc = MavenLocationExpander.EXPANSION_TARGET;
final Transport mdTrans = new StubTransport( dataMap );
modder =
new TestVersionCalculator( new ManipulationSession(), mdLoc, mdTrans, temp.newFolder( "galley-cache" ) );
return state;
}