in nbm-maven-plugin/src/main/java/org/apache/netbeans/nbm/AbstractNbmMojo.java [392:467]
protected final ArtifactResult turnJarToNbmFile( Artifact art, ArtifactFactory artifactFactory,
ArtifactResolver artifactResolver, MavenProject project,
ArtifactRepository localRepository )
throws MojoExecutionException
{
if ( "jar".equals( art.getType() ) || "nbm".equals( art.getType() ) )
{
//TODO, it would be nice to have a check to see if the
// "to-be-created" module nbm artifact is actually already in the
// list of dependencies (as "nbm-file") or not..
// that would be a timesaver
ExamineManifest mnf = new ExamineManifest( getLog() );
File jar = art.getFile();
if ( !jar.isFile() )
{
//MNBMODULE-210 with recent CoS changes in netbeans (7.4) jar will be file as we link open projects in
// the build via WorkspaceReader.
// That's fine here, as all we need is to know if project is osgi or nbm module.
// the nbm file has to be in local repository though.
String path = localRepository.pathOf( art );
File jar2 = new File( localRepository.getBasedir(), path.replace( "/", File.separator ) );
File manifest = new File( jar, "META-INF/MANIFEST.MF" );
if ( !jar2.isFile() || !manifest.isFile() )
{
getLog().warn( "MNBMODULE-131: need to at least run install phase on " + jar2 );
return new ArtifactResult( null, null );
}
mnf.setManifestFile( manifest );
}
else
{
mnf.setJarFile( jar );
}
mnf.checkFile();
if ( mnf.isNetBeansModule() )
{
Artifact nbmArt = artifactFactory.createDependencyArtifact(
art.getGroupId(),
art.getArtifactId(),
art.getVersionRange(),
"nbm-file",
art.getClassifier(),
art.getScope() );
try
{
artifactResolver.resolve( nbmArt, project.getRemoteArtifactRepositories(), localRepository );
}
catch ( ArtifactResolutionException ex )
{
//shall be check before actually resolving from repos?
checkReactor( art, nbmArt );
if ( !nbmArt.isResolved() )
{
throw new MojoExecutionException( "Failed to retrieve the nbm file from repository", ex );
}
}
catch ( ArtifactNotFoundException ex )
{
//shall be check before actually resolving from repos?
checkReactor( art, nbmArt );
if ( !nbmArt.isResolved() )
{
throw new MojoExecutionException( "Failed to retrieve the nbm file from repository", ex );
}
}
return new ArtifactResult( nbmArt, mnf );
}
if ( mnf.isOsgiBundle() )
{
return new ArtifactResult( null, mnf );
}
}
return new ArtifactResult( null, null );
}