in nbm-maven-plugin/src/main/java/org/apache/netbeans/nbm/CreateClusterAppMojo.java [764:930]
private void createBinEtcDir( File buildDir, String brandingToken )
throws IOException, MojoExecutionException
{
File etcDir = new File( buildDir + File.separator + "etc" );
etcDir.mkdir();
// create app.clusters which contains a list of clusters to include in the application
File clusterConf = new File( etcDir + File.separator + brandingToken + ".clusters" );
String clustersString;
if ( etcClustersFile != null )
{
clustersString = FileUtils.fileRead( etcClustersFile, "UTF-8" );
}
else
{
clusterConf.createNewFile();
StringBuilder buffer = new StringBuilder();
File[] clusters = buildDir.listFiles( new FileFilter()
{
@Override
public boolean accept( File pathname )
{
return new File( pathname, ".lastModified" ).exists();
}
} );
for ( File cluster : clusters )
{
buffer.append( cluster.getName() );
buffer.append( "\n" );
}
clustersString = buffer.toString();
}
FileUtils.fileWrite( clusterConf.getAbsolutePath(), clustersString );
File confFile = etcConfFile;
String str;
if ( confFile == null )
{
File harnessDir = new File( buildDir, "harness" );
// app.conf contains default options and other settings
confFile = new File(
harnessDir.getAbsolutePath() + File.separator + "etc" + File.separator + "app.conf" );
if ( confFile.exists() )
{
str = FileUtils.fileRead( confFile, "UTF-8" );
}
else
{
getLog().debug( "Using fallback app.conf shipping with the nbm-maven-plugin." );
InputStream instream = null;
try
{
instream = getClass().getClassLoader().getResourceAsStream( "harness/etc/app.conf" );
str = IOUtil.toString( instream, "UTF-8" );
}
finally
{
IOUtil.close( instream );
}
}
}
else
{
str = FileUtils.fileRead( confFile, "UTF-8" );
}
File confDestFile = new File(
etcDir.getAbsolutePath() + File.separator + brandingToken + ".conf" );
str = str.replace( "${branding.token}", brandingToken );
FileUtils.fileWrite( confDestFile.getAbsolutePath(), "UTF-8", str );
File destBinDir = new File( buildDir + File.separator + "bin" );
destBinDir.mkdir();
File binDir;
File destExeW = new File( destBinDir, brandingToken + "_w.exe" );
File destExe = new File( destBinDir, brandingToken + ".exe" );
File destExe64 = new File( destBinDir, brandingToken + "64.exe" );
File destSh = new File( destBinDir, brandingToken );
File harnessDir = new File( buildDir, "harness" );
//we have org-netbeans-modules-apisupport-harness in target area, just use it's own launchers.
binDir = new File(
harnessDir.getAbsolutePath() + File.separator + "launchers" );
if ( binDir.exists() )
{
File exe = new File( binDir, "app.exe" );
FileUtils.copyFile( exe, destExe );
File exe64 = new File( binDir, "app64.exe" );
if ( exe64.isFile() )
{
FileUtils.copyFile( exe64, destExe64 );
}
File exew = new File( binDir, "app_w.exe" );
if ( exew.exists() ) //in 6.7 the _w.exe file is no more.
{
FileUtils.copyFile( exew, destExeW );
}
File sh = new File( binDir, "app.sh" );
FileUtils.copyFile( sh, destSh );
}
else
{
File nbm = getHarnessNbm();
try ( ZipFile zip = new ZipFile( nbm ) )
{
getLog().debug(
"Using fallback executables from downloaded org-netbeans-modules-apisupport-harness nbm file." );
writeFromZip( zip, "netbeans/launchers/app.sh", destSh, true );
writeFromZip( zip, "netbeans/launchers/app.exe", destExe, true );
writeFromZip( zip, "netbeans/launchers/app64.exe", destExe64, false );
writeFromZip( zip, "netbeans/launchers/app_w.exe", destExeW, false );
}
}
if ( binDirectory != null )
{
//we have custom launchers, only overwrite the ones the user provided.
binDir = binDirectory;
File[] fls = binDir.listFiles();
if ( fls == null )
{
throw new MojoExecutionException( "Parameter 'binDirectory' has to point to an existing folder." );
}
for ( File fl : fls )
{
String name = fl.getName();
File dest = null;
if ( name.endsWith( "_w.exe" ) )
{
dest = destExeW;
}
else if ( name.endsWith( "64.exe" ) )
{
dest = destExe64;
}
else if ( name.endsWith( ".exe" ) )
{
dest = destExe;
}
else if ( !name.contains( "." ) || name.endsWith( ".sh" ) )
{
dest = destSh;
}
if ( dest != null && fl.exists() ) //in 6.7 the _w.exe file is no more.
{
FileUtils.copyFile( fl, dest );
}
else
{
//warn about file not being copied
}
}
}
Project antProject = antProject();
Chmod chmod = (Chmod) antProject.createTask( "chmod" );
FileSet fs = new FileSet();
fs.setDir( destBinDir );
fs.setIncludes( "*" );
chmod.addFileset( fs );
chmod.setPerm( "755" );
chmod.execute();
}