private static File createCopyDirectory(final File applicationDir) throws IOException { final File destApplicationFolder = File.createTempFile("gs_application_", ""); FileUtils.forceDelete(destApplicationFolder); FileUtils.forceMkdir(destApplicationFolder); FileUtils.copyDirectory(applicationDir, destApplicationFolder, SVNFileFilter.getFilter()); return destApplicationFolder; }
/** * source folder structure: service.groovy something.zip install.sh start.sh ... * * <p>usmlib mylib1.jar mylib2.jar ... * * <p>output folder: ext service.groovy something.zip install.sh start.sh ... lib mylib1.jar * mylib2.jar ... usm.jar * * <p>META-INF spring pu.xml * * @param srcFolder * @param recipeDirOrFile * @return * @throws IOException * @throws PackagingException */ private static File buildPuFolder(final Service service, final File recipeFile) throws IOException, PackagingException { final File srcFolder = recipeFile.getParentFile(); final File destPuFolder = File.createTempFile("gs_usm_", ""); FileUtils.forceDelete(destPuFolder); FileUtils.forceMkdir(destPuFolder); logger.finer("created temp directory " + destPuFolder.getAbsolutePath()); // create folders final File extFolder = new File(destPuFolder, "/ext"); FileUtils.forceMkdir(extFolder); final File libFolder = new File(destPuFolder.getAbsolutePath(), "/lib"); FileUtils.forceMkdir(libFolder); final File springFolder = new File(destPuFolder.getAbsolutePath(), "/META-INF/spring"); FileUtils.forceMkdir(springFolder); logger.finer("created pu structure under " + destPuFolder); // copy all files except usmlib from working dir to ext // FileUtils.copyDirectory(srcFolder, extFolder, new FileFilter() { // // @Override // public boolean accept(File pathname) { // boolean f1 = SVNFileFilter.getFilter().accept(pathname); // boolean f2 = !(pathname.isDirectory() && pathname.getName().equals("usmlib")); // return f1 && f2; // } // }); FileUtils.copyDirectory(srcFolder, extFolder); logger.finer( "copied files from " + srcFolder.getAbsolutePath() + " to " + extFolder.getAbsolutePath()); // copy all files from usmlib to lib final File srcUsmLibDir = new File(srcFolder, "usmlib"); if (srcUsmLibDir.exists()) { FileUtils.copyDirectory(srcUsmLibDir, libFolder, SVNFileFilter.getFilter()); } // copy usm.jar to lib final File usmLibDir = getUsmLibDir(service); final File srcUsmJar = new File(usmLibDir, "usm.jar"); if (!srcUsmJar.exists()) { throw new PackagingException("could not find usm.jar"); } FileUtils.copyDirectory(usmLibDir, libFolder, SVNFileFilter.getFilter()); logger.finer("copied " + srcUsmJar.getName()); // no pu.xml in source folder, lets copy the default one final InputStream puXmlStream = Packager.class.getClassLoader().getResourceAsStream("META-INF/spring/default_usm_pu.xml"); if (puXmlStream == null) { throw new PackagingException("can not find locate default pu.xml"); } final File destPuXml = new File(springFolder, "pu.xml"); FileUtils.copyInputStreamToFile(puXmlStream, destPuXml); logger.finer("copied pu.xml"); try { puXmlStream.close(); } catch (final IOException e) { logger.log(Level.SEVERE, "failed to close default_usm_pu.xml stream", e); } copyExtendedServiceFiles(service, recipeFile, extFolder); logger.finer("created pu folder " + destPuFolder.getAbsolutePath()); return destPuFolder; }