private final static String MERGE_BND = "merge.bnd";
private Path originBase;
+ private Path mavenBase;
+
private Path a2Base;
private Path a2SrcBase;
private Path a2LibBase;
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");
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);
/** 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);
Path mergeBnd = duDir.resolve(MERGE_BND);
if (Files.exists(mergeBnd)) {
mergeM2Artifacts(mergeBnd);
-// return;
}
Path commonBnd = duDir.resolve(COMMON_BND);
// 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);
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) {
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) {
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) {
? 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);
}
}
/** 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");
}
/*
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);
? 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);
}
}
}
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());