[NPANDAY-505] probe for tlbimp
Refactor, moving resolvers into dotnet-executable to allow that to be used
without a circular dependency.
git-svn-id: https://svn.apache.org/repos/asf/incubator/npanday/trunk@1608767 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/components/dotnet-core/src/main/resources/META-INF/plexus/components.xml b/components/dotnet-core/src/main/resources/META-INF/plexus/components.xml
deleted file mode 100644
index 10175c9..0000000
--- a/components/dotnet-core/src/main/resources/META-INF/plexus/components.xml
+++ /dev/null
@@ -1,95 +0,0 @@
-<!--
- ~ Licensed to the Apache Software Foundation (ASF) under one
- ~ or more contributor license agreements. See the NOTICE file
- ~ distributed with this work for additional information
- ~ regarding copyright ownership. The ASF licenses this file
- ~ to you under the Apache License, Version 2.0 (the
- ~ "License"); you may not use this file except in compliance
- ~ with the License. You may obtain a copy of the License at
- ~
- ~ http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing,
- ~ software distributed under the License is distributed on an
- ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- ~ KIND, either express or implied. See the License for the
- ~ specific language governing permissions and limitations
- ~ under the License.
- -->
-<component-set>
- <components>
- <component>
- <role>npanday.resolver.NPandayArtifactResolver</role>
- <implementation>npanday.resolver.DefaultNPandayArtifactResolver</implementation>
- <instantiation-strategy>per-lookup</instantiation-strategy>
- <requirements>
- <requirement>
- <role>org.apache.maven.artifact.resolver.ArtifactResolver</role>
- </requirement>
- </requirements>
- </component>
-
- <component>
- <role>npanday.resolver.NPandayDependencyResolution</role>
- <implementation>npanday.resolver.NPandayDependencyResolution</implementation>
- <instantiation-strategy>per-lookup</instantiation-strategy>
- <requirements>
- <requirement>
- <role>npanday.resolver.NPandayArtifactResolver</role>
- </requirement>
- <requirement>
- <role>org.apache.maven.artifact.factory.ArtifactFactory</role>
- </requirement>
- <requirement>
- <role>org.apache.maven.artifact.metadata.ArtifactMetadataSource</role>
- </requirement>
- </requirements>
- </component>
-
- <!-- resolving contributors -->
- <component>
- <role>npanday.resolver.ArtifactResolvingContributor</role>
- <role-hint>gac</role-hint>
- <implementation>npanday.resolver.resolvers.GacResolver</implementation>
- <requirements>
- <requirement>
- <role>npanday.resolver.NPandayResolutionCache</role>
- </requirement>
- </requirements>
- </component>
-
- <component>
- <role>npanday.resolver.ArtifactResolvingContributor</role>
- <role-hint>com</role-hint>
- <implementation>npanday.resolver.resolvers.ComReferenceResolver</implementation>
- <requirements>
- <requirement>
- <role>npanday.resolver.NPandayResolutionCache</role>
- </requirement>
- </requirements>
- </component>
-
- <component>
- <role>npanday.resolver.ArtifactResolvingContributor</role>
- <role-hint>pdb</role-hint>
- <implementation>npanday.resolver.resolvers.PdbAssemblyResolver</implementation>
- <requirements>
- <requirement>
- <role>org.apache.maven.artifact.resolver.ArtifactResolver</role>
- </requirement>
- <requirement>
- <role>org.apache.maven.artifact.factory.ArtifactFactory</role>
- </requirement>
- <requirement>
- <role>npanday.resolver.NPandayResolutionCache</role>
- </requirement>
- </requirements>
- </component>
-
- <component>
- <role>npanday.resolver.NPandayResolutionCache</role>
- <implementation>npanday.resolver.NPandayResolutionCache</implementation>
- </component>
-
- </components>
-</component-set>
diff --git a/components/dotnet-core/src/main/java/npanday/resolver/ArtifactResolvingContributor.java b/components/dotnet-executable/src/main/java/npanday/resolver/ArtifactResolvingContributor.java
similarity index 100%
rename from components/dotnet-core/src/main/java/npanday/resolver/ArtifactResolvingContributor.java
rename to components/dotnet-executable/src/main/java/npanday/resolver/ArtifactResolvingContributor.java
diff --git a/components/dotnet-core/src/main/java/npanday/resolver/DefaultNPandayArtifactResolver.java b/components/dotnet-executable/src/main/java/npanday/resolver/DefaultNPandayArtifactResolver.java
similarity index 86%
rename from components/dotnet-core/src/main/java/npanday/resolver/DefaultNPandayArtifactResolver.java
rename to components/dotnet-executable/src/main/java/npanday/resolver/DefaultNPandayArtifactResolver.java
index cd9b45b..958b285 100644
--- a/components/dotnet-core/src/main/java/npanday/resolver/DefaultNPandayArtifactResolver.java
+++ b/components/dotnet-executable/src/main/java/npanday/resolver/DefaultNPandayArtifactResolver.java
@@ -22,7 +22,6 @@
import com.google.common.base.Predicate;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
-import npanday.resolver.resolvers.GacResolver;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
import org.apache.maven.artifact.repository.ArtifactRepository;
@@ -31,19 +30,10 @@
import org.apache.maven.artifact.resolver.ArtifactResolutionResult;
import org.apache.maven.artifact.resolver.ArtifactResolver;
import org.apache.maven.artifact.resolver.DebugResolutionListener;
-import org.apache.maven.artifact.resolver.ResolutionListener;
import org.apache.maven.artifact.resolver.WarningResolutionListener;
-import org.apache.maven.artifact.resolver.filter.AndArtifactFilter;
import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
-import org.codehaus.plexus.PlexusConstants;
-import org.codehaus.plexus.PlexusContainer;
-import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
-import org.codehaus.plexus.context.Context;
-import org.codehaus.plexus.context.ContextException;
import org.codehaus.plexus.logging.AbstractLogEnabled;
-import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable;
import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable;
-import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException;
import java.util.ArrayList;
import java.util.Collections;
@@ -61,14 +51,12 @@
*/
public class DefaultNPandayArtifactResolver
extends AbstractLogEnabled
- implements NPandayArtifactResolver, Contextualizable, Initializable
+ implements NPandayArtifactResolver, Initializable
{
- private ArtifactResolvingContributor[] contributors;
+ private List<ArtifactResolvingContributor> contributors;
ArtifactResolver original;
- private PlexusContainer container;
-
private Set<Artifact> customResolveCache = Sets.newHashSet();
private Set<Artifact> customDependenciesCache = Sets.newHashSet();
@@ -134,12 +122,7 @@
return listeners;
}
- public void contextualize( Context context ) throws ContextException
- {
- container = (PlexusContainer) context.get( PlexusConstants.PLEXUS_KEY );
- }
-
- public void runArtifactContributors(Artifact artifact, ArtifactRepository localRepository,
+ public void runArtifactContributors(Artifact artifact, ArtifactRepository localRepository,
List remoteRepositories) throws ArtifactNotFoundException
{
if(!artifact.isResolved()) {
@@ -228,26 +211,12 @@
customDependenciesCache.addAll(resolvedArtifacts);
}
- public void initialize() throws InitializationException
- {
- try
- {
- List list = container.lookupList(
- ArtifactResolvingContributor.role
- );
-
- contributors = (ArtifactResolvingContributor[]) list.toArray( new ArtifactResolvingContributor[0] );
-
- if (contributors.length == 0) {
- getLogger().warn( "NPANDAY-147-005: could not find any custom artifact resolving contributors!" );
- }
- else{
- getLogger().debug( "NPANDAY-147-004: resolved " + contributors.length + " contributors: " + list );
- }
+ public void initialize() {
+ if (contributors.size() == 0) {
+ getLogger().warn( "NPANDAY-147-005: could not find any custom artifact resolving contributors!" );
}
- catch ( ComponentLookupException e )
- {
- getLogger().error( "NPANDAY-147-003: could not resolve contributors" );
+ else{
+ getLogger().debug( "NPANDAY-147-004: resolved " + contributors.size() + " contributors: " + contributors );
}
}
diff --git a/components/dotnet-core/src/main/java/npanday/resolver/NPandayArtifactResolver.java b/components/dotnet-executable/src/main/java/npanday/resolver/NPandayArtifactResolver.java
similarity index 100%
rename from components/dotnet-core/src/main/java/npanday/resolver/NPandayArtifactResolver.java
rename to components/dotnet-executable/src/main/java/npanday/resolver/NPandayArtifactResolver.java
diff --git a/components/dotnet-core/src/main/java/npanday/resolver/NPandayDependencyResolution.java b/components/dotnet-executable/src/main/java/npanday/resolver/NPandayDependencyResolution.java
similarity index 97%
rename from components/dotnet-core/src/main/java/npanday/resolver/NPandayDependencyResolution.java
rename to components/dotnet-executable/src/main/java/npanday/resolver/NPandayDependencyResolution.java
index 4eb2a3f..603e88a 100644
--- a/components/dotnet-core/src/main/java/npanday/resolver/NPandayDependencyResolution.java
+++ b/components/dotnet-executable/src/main/java/npanday/resolver/NPandayDependencyResolution.java
@@ -42,12 +42,18 @@
* resolver logic for GAC, e.g.
*
* @author <a href="mailto:me@lcorneliussen.de>Lars Corneliussen, Faktum Software</a>
+ * @plexus.component role="npanday.resolver.NPandayDependencyResolution"
*/
public class NPandayDependencyResolution
extends AbstractLogEnabled
{
+ /** @plexus.requirement */
private NPandayArtifactResolver artifactResolver;
+
+ /** @plexus.requirement */
private ArtifactFactory artifactFactory;
+
+ /** @plexus.requirement */
private ArtifactMetadataSource metaDataSource;
public Set<Artifact> require(MavenProject project, ArtifactRepository localRepository, String scope) throws
diff --git a/components/dotnet-core/src/main/java/npanday/resolver/NPandayResolutionCache.java b/components/dotnet-executable/src/main/java/npanday/resolver/NPandayResolutionCache.java
similarity index 96%
rename from components/dotnet-core/src/main/java/npanday/resolver/NPandayResolutionCache.java
rename to components/dotnet-executable/src/main/java/npanday/resolver/NPandayResolutionCache.java
index 8878e08..4a67984 100644
--- a/components/dotnet-core/src/main/java/npanday/resolver/NPandayResolutionCache.java
+++ b/components/dotnet-executable/src/main/java/npanday/resolver/NPandayResolutionCache.java
@@ -32,6 +32,7 @@
* Resolving the artifact file once pr. artifact id is enough.
*
* @author <a href="mailto:me@lcorneliussen.de>Lars Corneliussen, Faktum Software</a>
+ * @plexus.component role="npanday.resolver.NPandayResolutionCache"
*/
public class NPandayResolutionCache
extends AbstractLogEnabled
diff --git a/components/dotnet-core/src/main/java/npanday/resolver/NPandayResolutionListener.java b/components/dotnet-executable/src/main/java/npanday/resolver/NPandayResolutionListener.java
similarity index 100%
rename from components/dotnet-core/src/main/java/npanday/resolver/NPandayResolutionListener.java
rename to components/dotnet-executable/src/main/java/npanday/resolver/NPandayResolutionListener.java
diff --git a/components/dotnet-core/src/main/java/npanday/resolver/filter/DotnetAssemblyArtifactFilter.java b/components/dotnet-executable/src/main/java/npanday/resolver/filter/DotnetAssemblyArtifactFilter.java
similarity index 100%
rename from components/dotnet-core/src/main/java/npanday/resolver/filter/DotnetAssemblyArtifactFilter.java
rename to components/dotnet-executable/src/main/java/npanday/resolver/filter/DotnetAssemblyArtifactFilter.java
diff --git a/components/dotnet-core/src/main/java/npanday/resolver/filter/DotnetExecutableArtifactFilter.java b/components/dotnet-executable/src/main/java/npanday/resolver/filter/DotnetExecutableArtifactFilter.java
similarity index 100%
rename from components/dotnet-core/src/main/java/npanday/resolver/filter/DotnetExecutableArtifactFilter.java
rename to components/dotnet-executable/src/main/java/npanday/resolver/filter/DotnetExecutableArtifactFilter.java
diff --git a/components/dotnet-core/src/main/java/npanday/resolver/filter/DotnetLibraryArtifactFilter.java b/components/dotnet-executable/src/main/java/npanday/resolver/filter/DotnetLibraryArtifactFilter.java
similarity index 100%
rename from components/dotnet-core/src/main/java/npanday/resolver/filter/DotnetLibraryArtifactFilter.java
rename to components/dotnet-executable/src/main/java/npanday/resolver/filter/DotnetLibraryArtifactFilter.java
diff --git a/components/dotnet-core/src/main/java/npanday/resolver/filter/DotnetSymbolsArtifactFilter.java b/components/dotnet-executable/src/main/java/npanday/resolver/filter/DotnetSymbolsArtifactFilter.java
similarity index 100%
rename from components/dotnet-core/src/main/java/npanday/resolver/filter/DotnetSymbolsArtifactFilter.java
rename to components/dotnet-executable/src/main/java/npanday/resolver/filter/DotnetSymbolsArtifactFilter.java
diff --git a/components/dotnet-core/src/main/java/npanday/resolver/filter/OrArtifactFilter.java b/components/dotnet-executable/src/main/java/npanday/resolver/filter/OrArtifactFilter.java
similarity index 100%
rename from components/dotnet-core/src/main/java/npanday/resolver/filter/OrArtifactFilter.java
rename to components/dotnet-executable/src/main/java/npanday/resolver/filter/OrArtifactFilter.java
diff --git a/components/dotnet-core/src/main/java/npanday/resolver/resolvers/ComReferenceResolver.java b/components/dotnet-executable/src/main/java/npanday/resolver/resolvers/ComReferenceResolver.java
similarity index 78%
rename from components/dotnet-core/src/main/java/npanday/resolver/resolvers/ComReferenceResolver.java
rename to components/dotnet-executable/src/main/java/npanday/resolver/resolvers/ComReferenceResolver.java
index be51f04..32977cb 100644
--- a/components/dotnet-core/src/main/java/npanday/resolver/resolvers/ComReferenceResolver.java
+++ b/components/dotnet-executable/src/main/java/npanday/resolver/resolvers/ComReferenceResolver.java
@@ -20,6 +20,10 @@
package npanday.resolver.resolvers;
import npanday.ArtifactTypeHelper;
+import npanday.executable.ExecutableRequirement;
+import npanday.executable.ExecutionResult;
+import npanday.executable.NetExecutable;
+import npanday.executable.NetExecutableFactory;
import npanday.resolver.ArtifactResolvingContributor;
import npanday.resolver.NPandayResolutionCache;
import org.apache.maven.artifact.Artifact;
@@ -27,11 +31,6 @@
import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
import org.codehaus.plexus.logging.AbstractLogEnabled;
import org.codehaus.plexus.util.Os;
-import org.codehaus.plexus.util.cli.CommandLineException;
-import org.codehaus.plexus.util.cli.CommandLineUtils;
-import org.codehaus.plexus.util.cli.Commandline;
-import org.codehaus.plexus.util.cli.DefaultConsumer;
-import org.codehaus.plexus.util.cli.StreamConsumer;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
@@ -46,13 +45,18 @@
/**
* @author <a href="mailto:me@lcorneliussen.de>Lars Corneliussen, Faktum Software</a>
+ * @plexus.component role="npanday.resolver.ArtifactResolvingContributor" role-hint="com"
*/
public class ComReferenceResolver
extends AbstractLogEnabled
implements ArtifactResolvingContributor
{
+ /** @plexus.requirement */
NPandayResolutionCache cache;
+ /** @plexus.requirement */
+ protected NetExecutableFactory netExecutableFactory;
+
public void contribute(Artifact artifact, ArtifactRepository localRepository, List remoteRepositories,
Set<Artifact> additionalDependenciesCollector, ArtifactFilter filter)
{
@@ -73,7 +77,7 @@
}
String tokenId = artifact.getClassifier();
- String interopPath = null;
+ String interopPath;
try
{
interopPath = generateInteropDll( artifact.getArtifactId(), tokenId );
@@ -83,6 +87,7 @@
getLogger().error(
"NPANDAY-150-002: Error creating interop dll for " + artifact.getId()
);
+ return;
}
File f = new File( interopPath );
@@ -130,7 +135,10 @@
try
{
- execute( "tlbimp", params );
+ final NetExecutable executable = netExecutableFactory.getExecutable(
+ new ExecutableRequirement( "MICROSOFT", null, null, "TLBIMP" ), params, null
+ );
+ executable.execute();
}
catch ( Exception e )
{
@@ -277,13 +285,13 @@
parameters.add( registryPath );
parameters.add( "/ve" );
- StreamConsumer outConsumer = new StreamConsumerImpl();
- StreamConsumer errorConsumer = new StreamConsumerImpl();
-
+ ExecutionResult res;
try
{
- // TODO: investigate why outConsumer ignores newline
- execute( "reg", parameters, outConsumer, errorConsumer );
+ final NetExecutable executable = netExecutableFactory.getExecutable(
+ new ExecutableRequirement( "MICROSOFT", null, null, "REG" ), parameters, null
+ );
+ res = executable.execute();
}
catch ( Exception e )
{
@@ -291,8 +299,7 @@
+ "] ActiveX component in your system, you need to install this component first to continue." );
}
- // parse outConsumer
- String out = outConsumer.toString();
+ String out = res.getStandardOut();
String tokens[] = out.split( "\n" );
@@ -312,74 +319,4 @@
return null;
}
-
- // can't use dotnet-executable due to cyclic dependency.
- private void execute( String executable, List<String> commands )
- throws Exception
- {
- execute( executable, commands, null, null );
- }
-
- private void execute( String executable, List<String> commands, StreamConsumer systemOut, StreamConsumer systemError )
- throws Exception
- {
- int result = 0;
- Commandline commandline = new Commandline();
- commandline.setExecutable( executable );
- commandline.addArguments( commands.toArray( new String[commands.size()] ) );
- try
- {
- result = CommandLineUtils.executeCommandLine( commandline, systemOut, systemError );
-
- System.out.println( "NPANDAY-040-000: Executed command: Commandline = " + commandline + ", Result = "
- + result );
-
- if ( result != 0 )
- {
- throw new Exception( "NPANDAY-040-001: Could not execute: Command = " + commandline.toString()
- + ", Result = " + result );
- }
- }
- catch ( CommandLineException e )
- {
- throw new Exception( "NPANDAY-040-002: Could not execute: Command = " + commandline.toString(), e);
- }
- }
-
- /**
- * TODO: refactor this to another class and all methods concerning com_reference StreamConsumer instance that
- * buffers the entire output
- */
- class StreamConsumerImpl
- implements StreamConsumer
- {
-
- private DefaultConsumer consumer;
-
- private StringBuffer sb = new StringBuffer();
-
- public StreamConsumerImpl()
- {
- consumer = new DefaultConsumer();
- }
-
- public void consumeLine( String line )
- {
- sb.append( line );
- if ( getLogger() != null )
- {
- consumer.consumeLine( line );
- }
- }
-
- /**
- * Returns the stream
- *
- * @return the stream
- */
- public String toString()
- {
- return sb.toString();
- }
- }
}
diff --git a/components/dotnet-core/src/main/java/npanday/resolver/resolvers/GacResolver.java b/components/dotnet-executable/src/main/java/npanday/resolver/resolvers/GacResolver.java
similarity index 95%
rename from components/dotnet-core/src/main/java/npanday/resolver/resolvers/GacResolver.java
rename to components/dotnet-executable/src/main/java/npanday/resolver/resolvers/GacResolver.java
index 43bcd9e..26bf501 100644
--- a/components/dotnet-core/src/main/java/npanday/resolver/resolvers/GacResolver.java
+++ b/components/dotnet-executable/src/main/java/npanday/resolver/resolvers/GacResolver.java
@@ -34,10 +34,12 @@
/**
* @author <a href="mailto:me@lcorneliussen.de>Lars Corneliussen, Faktum Software</a>
+ * @plexus.component role="npanday.resolver.ArtifactResolvingContributor" role-hint="gac"
*/
public class GacResolver
implements ArtifactResolvingContributor
{
+ /** @plexus.requirement */
NPandayResolutionCache cache;
public void tryResolve(Artifact artifact, Set<Artifact> additionalDependenciesCollector, ArtifactFilter filter) throws
diff --git a/components/dotnet-core/src/main/java/npanday/resolver/resolvers/PdbAssemblyResolver.java b/components/dotnet-executable/src/main/java/npanday/resolver/resolvers/PdbAssemblyResolver.java
similarity index 95%
rename from components/dotnet-core/src/main/java/npanday/resolver/resolvers/PdbAssemblyResolver.java
rename to components/dotnet-executable/src/main/java/npanday/resolver/resolvers/PdbAssemblyResolver.java
index 554affc..12c8439 100644
--- a/components/dotnet-core/src/main/java/npanday/resolver/resolvers/PdbAssemblyResolver.java
+++ b/components/dotnet-executable/src/main/java/npanday/resolver/resolvers/PdbAssemblyResolver.java
@@ -19,12 +19,17 @@
/**
* PDB assemblies contributor class.
+ * @plexus.component role="npanday.resolver.ArtifactResolvingContributor" role-hint="pdb"
*/
public class PdbAssemblyResolver extends AbstractLogEnabled implements ArtifactResolvingContributor
{
+ /** @plexus.requirement */
ArtifactResolver mavenResolver;
+
+ /** @plexus.requirement */
ArtifactFactory artifactFactory;
+ /** @plexus.requirement */
NPandayResolutionCache cache;
/**
diff --git a/components/dotnet-executable/src/main/resources/META-INF/npanday/executable-plugins.xml b/components/dotnet-executable/src/main/resources/META-INF/npanday/executable-plugins.xml
new file mode 100644
index 0000000..1b9834b
--- /dev/null
+++ b/components/dotnet-executable/src/main/resources/META-INF/npanday/executable-plugins.xml
@@ -0,0 +1,73 @@
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one
+ ~ or more contributor license agreements. See the NOTICE file
+ ~ distributed with this work for additional information
+ ~ regarding copyright ownership. The ASF licenses this file
+ ~ to you under the Apache License, Version 2.0 (the
+ ~ "License"); you may not use this file except in compliance
+ ~ with the License. You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing,
+ ~ software distributed under the License is distributed on an
+ ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ ~ KIND, either express or implied. See the License for the
+ ~ specific language governing permissions and limitations
+ ~ under the License.
+ -->
+<executablePlugins>
+
+ <executablePlugin>
+ <identifier>TLBIMP</identifier>
+ <pluginClass>npanday.executable.impl.DefaultNetExecutable</pluginClass>
+ <vendor>MICROSOFT</vendor>
+ <executable>tlbimp</executable>
+ <profile>TLBIMP</profile>
+ <frameworkVersions>
+ <frameworkVersion>4.5.1</frameworkVersion>
+ <frameworkVersion>4.5</frameworkVersion>
+ <frameworkVersion>4.0</frameworkVersion>
+ <frameworkVersion>3.5</frameworkVersion>
+ <frameworkVersion>3.0</frameworkVersion>
+ <frameworkVersion>2.0.50727</frameworkVersion>
+ <frameworkVersion>1.1.4322</frameworkVersion>
+ </frameworkVersions>
+ <platforms>
+ <platform>
+ <operatingSystem>Windows</operatingSystem>
+ </platform>
+ </platforms>
+ <probingPaths>
+ <!-- TODO: this should be broken up as XSD is, just means for now you always get newest available tools version, but will target right framework -->
+ <probingPath>${HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\12.0\12.0@SDK40ToolsPath}</probingPath>
+ <probingPath>${HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\12.0\11.0@SDK40ToolsPath}</probingPath>
+ <probingPath>${HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0\11.0@SDK40ToolsPath}</probingPath>
+ <probingPath>${HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0@SDK40ToolsPath}</probingPath>
+ <probingPath>${HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows@CurrentInstallFolder}\bin</probingPath>
+ <probingPath>${HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0@SDK35ToolsPath}</probingPath>
+ </probingPaths>
+ </executablePlugin>
+ <executablePlugin>
+ <identifier>REG</identifier>
+ <pluginClass>npanday.executable.impl.DefaultNetExecutable</pluginClass>
+ <vendor>MICROSOFT</vendor>
+ <executable>reg</executable>
+ <profile>REG</profile>
+ <frameworkVersions>
+ <frameworkVersion>4.5.1</frameworkVersion>
+ <frameworkVersion>4.5</frameworkVersion>
+ <frameworkVersion>4.0</frameworkVersion>
+ <frameworkVersion>3.5</frameworkVersion>
+ <frameworkVersion>3.0</frameworkVersion>
+ <frameworkVersion>2.0.50727</frameworkVersion>
+ <frameworkVersion>1.1.4322</frameworkVersion>
+ </frameworkVersions>
+ <platforms>
+ <platform>
+ <operatingSystem>Windows</operatingSystem>
+ </platform>
+ </platforms>
+ </executablePlugin>
+
+</executablePlugins>
diff --git a/components/dotnet-executable/src/main/resources/META-INF/plexus/components.xml b/components/dotnet-executable/src/main/resources/META-INF/plexus/components.xml
index b3b0533..618902c 100644
--- a/components/dotnet-executable/src/main/resources/META-INF/plexus/components.xml
+++ b/components/dotnet-executable/src/main/resources/META-INF/plexus/components.xml
@@ -19,5 +19,18 @@
<component-set>
<components>
<!-- created through annotations -->
+ <component>
+ <role>npanday.resolver.NPandayArtifactResolver</role>
+ <implementation>npanday.resolver.DefaultNPandayArtifactResolver</implementation>
+ <requirements>
+ <requirement>
+ <role>org.apache.maven.artifact.resolver.ArtifactResolver</role>
+ </requirement>
+ <requirement>
+ <role>npanday.resolver.ArtifactResolvingContributor</role>
+ <field-name>contributors</field-name>
+ </requirement>
+ </requirements>
+ </component>
</components>
</component-set>