]> git.argeo.org Git - cc0/argeo-build.git/blobdiff - src/org/argeo/build/Repackage.java
Delete failed directories from previous buils
[cc0/argeo-build.git] / src / org / argeo / build / Repackage.java
index b0e667716d91fb42e4ea3ad22105b92cbc757fc9..193d13426bef01494c9561e3bce25c831d6e8b01 100644 (file)
@@ -81,6 +81,8 @@ public class Repackage {
        private final static String MERGE_BND = "merge.bnd";
 
        private Path originBase;
+       private Path mavenBase;
+
        private Path a2Base;
        private Path a2SrcBase;
        private Path a2LibBase;
@@ -101,6 +103,8 @@ public class Repackage {
                Objects.requireNonNull(a2Base);
                Objects.requireNonNull(descriptorsBase);
                this.originBase = Paths.get(System.getProperty("user.home"), ".cache", "argeo/build/origin");
+               this.mavenBase = Paths.get(System.getProperty("user.home"), ".m2", "repository");
+
                // TODO define and use a build base
                this.a2Base = a2Base;
                this.a2SrcBase = a2Base.getParent().resolve(a2Base.getFileName() + ".src");
@@ -193,7 +197,7 @@ public class Repackage {
                                throw new IllegalArgumentException("No M2 coordinates available for " + bndFile);
                        M2Artifact artifact = new M2Artifact(m2Coordinates);
                        URL url = M2ConventionsUtils.mavenRepoUrl(repoStr, artifact);
-                       Path downloaded = downloadMaven(url, originBase, artifact);
+                       Path downloaded = downloadMaven(url, artifact);
 
                        Path targetBundleDir = processBndJar(downloaded, targetCategoryBase, fileProps, artifact);
 
@@ -208,7 +212,6 @@ public class Repackage {
        /** Process multiple Maven artifacts. */
        public void processM2BasedDistributionUnit(Path duDir) {
                try {
-                       // String category = duDir.getParent().getFileName().toString();
                        Path categoryRelativePath = descriptorsBase.relativize(duDir.getParent());
                        Path targetCategoryBase = a2Base.resolve(categoryRelativePath);
 
@@ -216,7 +219,6 @@ public class Repackage {
                        Path mergeBnd = duDir.resolve(MERGE_BND);
                        if (Files.exists(mergeBnd)) {
                                mergeM2Artifacts(mergeBnd);
-//                             return;
                        }
 
                        Path commonBnd = duDir.resolve(COMMON_BND);
@@ -279,7 +281,7 @@ public class Repackage {
 
                                // download
                                URL url = M2ConventionsUtils.mavenRepoUrl(repoStr, artifact);
-                               Path downloaded = downloadMaven(url, originBase, artifact);
+                               Path downloaded = downloadMaven(url, artifact);
 
                                Path targetBundleDir = processBndJar(downloaded, targetCategoryBase, mergeProps, artifact);
 //                             logger.log(Level.DEBUG, () -> "Processed " + downloaded);
@@ -331,7 +333,14 @@ public class Repackage {
                if (bundleSymbolicName == null)
                        throw new IllegalArgumentException("Bundle-SymbolicName must be set in " + mergeBnd);
                CategoryNameVersion nameVersion = new M2Artifact(category + ":" + bundleSymbolicName + ":" + m2Version);
+
                Path targetBundleDir = targetCategoryBase.resolve(bundleSymbolicName + "." + nameVersion.getBranch());
+               if (Files.exists(targetBundleDir)) {
+                       logger.log(WARNING, targetBundleDir + " exists, deleting it...");
+                       deleteDirectory(targetBundleDir);
+               } else {
+                       Files.createDirectories(targetBundleDir);
+               }
 
                String[] artifacts = artifactsStr.split(",");
                artifacts: for (String str : artifacts) {
@@ -342,7 +351,7 @@ public class Repackage {
                        if (artifact.getVersion() == null)
                                artifact.setVersion(m2Version);
                        URL url = M2ConventionsUtils.mavenRepoUrl(repoStr, artifact);
-                       Path downloaded = downloadMaven(url, originBase, artifact);
+                       Path downloaded = downloadMaven(url, artifact);
                        JarEntry entry;
                        try (JarInputStream jarIn = new JarInputStream(Files.newInputStream(downloaded), false)) {
                                entries: while ((entry = jarIn.getNextJarEntry()) != null) {
@@ -523,7 +532,7 @@ public class Repackage {
                try {
                        M2Artifact sourcesArtifact = new M2Artifact(artifact.toM2Coordinates(), "sources");
                        URL sourcesUrl = M2ConventionsUtils.mavenRepoUrl(repoStr, sourcesArtifact);
-                       Path sourcesDownloaded = downloadMaven(sourcesUrl, originBase, artifact, true);
+                       Path sourcesDownloaded = downloadMaven(sourcesUrl, artifact, true);
                        processM2SourceJar(sourcesDownloaded, targetBundleDir);
                        logger.log(Level.TRACE, () -> "Processed source " + sourcesDownloaded);
                } catch (Exception e) {
@@ -539,9 +548,9 @@ public class Repackage {
                                        ? targetBundleDir.getParent().resolve(targetBundleDir.toString() + ".src")
                                        : targetBundleDir.resolve("OSGI-OPT/src");
 
-                       // TODO make it less dangerous?
                        if (Files.exists(targetSourceDir)) {
-//                             deleteDirectory(targetSourceDir);
+                               logger.log(WARNING, targetSourceDir + " exists, deleting it...");
+                               deleteDirectory(targetSourceDir);
                        } else {
                                Files.createDirectories(targetSourceDir);
                        }
@@ -571,14 +580,15 @@ public class Repackage {
        }
 
        /** Download a Maven artifact. */
-       protected Path downloadMaven(URL url, Path dir, M2Artifact artifact) throws IOException {
-               return downloadMaven(url, dir, artifact, false);
+       protected Path downloadMaven(URL url, M2Artifact artifact) throws IOException {
+               return downloadMaven(url, artifact, false);
        }
 
        /** Download a Maven artifact. */
-       protected Path downloadMaven(URL url, Path dir, M2Artifact artifact, boolean sources) throws IOException {
-               return download(url, dir, artifact.getGroupId() + '/' + artifact.getArtifactId() + "-" + artifact.getVersion()
-                               + (sources ? "-sources" : "") + ".jar");
+       protected Path downloadMaven(URL url, M2Artifact artifact, boolean sources) throws IOException {
+               return download(url, mavenBase, artifact.getGroupId().replace(".", "/") //
+                               + '/' + artifact.getArtifactId() + '/' + artifact.getVersion() //
+                               + '/' + artifact.getArtifactId() + "-" + artifact.getVersion() + (sources ? "-sources" : "") + ".jar");
        }
 
        /*
@@ -592,9 +602,8 @@ public class Repackage {
                        Path targetCategoryBase = a2Base.resolve(categoryRelativePath);
                        Files.createDirectories(targetCategoryBase);
                        // first delete all directories from previous builds
-                       for (Path dir : Files.newDirectoryStream(targetCategoryBase, (p) -> Files.isDirectory(p))) {
+                       for (Path dir : Files.newDirectoryStream(targetCategoryBase, (p) -> Files.isDirectory(p)))
                                deleteDirectory(dir);
-                       }
 
                        Files.createDirectories(originBase);
 
@@ -698,9 +707,9 @@ public class Repackage {
                                                ? targetBundleDir.getParent().resolve(targetBundleDir.toString() + ".src")
                                                : targetBundleDir.resolve("OSGI-OPT/src");
 
-                               // TODO make it less dangerous?
                                if (Files.exists(targetSourceDir)) {
-//                             deleteDirectory(targetSourceDir);
+                                       logger.log(WARNING, targetSourceDir + " exists, deleting it...");
+                                       deleteDirectory(targetSourceDir);
                                } else {
                                        Files.createDirectories(targetSourceDir);
                                }
@@ -773,6 +782,12 @@ public class Repackage {
                                }
                        }
                        targetBundleDir = targetBase.resolve(nameVersion.getName() + "." + nameVersion.getBranch());
+                       if (Files.exists(targetBundleDir)) {
+                               logger.log(WARNING, targetBundleDir + " exists, deleting it...");
+                               deleteDirectory(targetBundleDir);
+                       } else {
+                               Files.createDirectories(targetBundleDir);
+                       }
 
                        // force Java 9 module name
                        entries.put(ManifestConstants.AUTOMATIC_MODULE_NAME.toString(), nameVersion.getName());