diff --git a/tycho-bundles/org.eclipse.tycho.core.shared/src/main/java/org/eclipse/tycho/core/shared/BuildPropertiesImpl.java b/tycho-bundles/org.eclipse.tycho.core.shared/src/main/java/org/eclipse/tycho/core/shared/BuildPropertiesImpl.java
index b22c4d321e..2133d724d9 100644
--- a/tycho-bundles/org.eclipse.tycho.core.shared/src/main/java/org/eclipse/tycho/core/shared/BuildPropertiesImpl.java
+++ b/tycho-bundles/org.eclipse.tycho.core.shared/src/main/java/org/eclipse/tycho/core/shared/BuildPropertiesImpl.java
@@ -28,6 +28,8 @@
import java.util.function.Predicate;
import java.util.stream.Collectors;
+import org.eclipse.tycho.BuildProperties;
+
public class BuildPropertiesImpl implements BuildProperties {
private String javacSource;
diff --git a/tycho-bundles/org.eclipse.tycho.core.shared/src/main/java/org/eclipse/tycho/core/shared/BuildProperties.java b/tycho-bundles/org.eclipse.tycho.embedder.shared/src/main/java/org/eclipse/tycho/BuildProperties.java
similarity index 98%
rename from tycho-bundles/org.eclipse.tycho.core.shared/src/main/java/org/eclipse/tycho/core/shared/BuildProperties.java
rename to tycho-bundles/org.eclipse.tycho.embedder.shared/src/main/java/org/eclipse/tycho/BuildProperties.java
index e4bef936eb..c3ba35add1 100644
--- a/tycho-bundles/org.eclipse.tycho.core.shared/src/main/java/org/eclipse/tycho/core/shared/BuildProperties.java
+++ b/tycho-bundles/org.eclipse.tycho.embedder.shared/src/main/java/org/eclipse/tycho/BuildProperties.java
@@ -12,7 +12,7 @@
* Christoph Läubrich - Bug 572481 - Tycho does not understand "additional.bundles" directive in build.properties
*******************************************************************************/
-package org.eclipse.tycho.core.shared;
+package org.eclipse.tycho;
import java.util.Collection;
import java.util.List;
diff --git a/tycho-bundles/org.eclipse.tycho.core.shared/src/main/java/org/eclipse/tycho/core/shared/BuildPropertiesParser.java b/tycho-bundles/org.eclipse.tycho.embedder.shared/src/main/java/org/eclipse/tycho/BuildPropertiesParser.java
similarity index 78%
rename from tycho-bundles/org.eclipse.tycho.core.shared/src/main/java/org/eclipse/tycho/core/shared/BuildPropertiesParser.java
rename to tycho-bundles/org.eclipse.tycho.embedder.shared/src/main/java/org/eclipse/tycho/BuildPropertiesParser.java
index a436c7a804..c7e17b8cd0 100644
--- a/tycho-bundles/org.eclipse.tycho.core.shared/src/main/java/org/eclipse/tycho/core/shared/BuildPropertiesParser.java
+++ b/tycho-bundles/org.eclipse.tycho.embedder.shared/src/main/java/org/eclipse/tycho/BuildPropertiesParser.java
@@ -11,7 +11,7 @@
* SAP AG - initial API and implementation
*******************************************************************************/
-package org.eclipse.tycho.core.shared;
+package org.eclipse.tycho;
import java.io.File;
@@ -19,9 +19,13 @@ public interface BuildPropertiesParser {
public static final String BUILD_PROPERTIES = "build.properties";
+ default BuildProperties parse(ReactorProject project) {
+ return parse(project.getBasedir(), project.getInterpolator());
+ }
+
/**
* Parse the file "build.properties" in baseDir. If the file does not exist or cannot be read,
* an "empty" {@link BuildProperties} will be returned.
*/
- public BuildProperties parse(File baseDir);
+ BuildProperties parse(File baseDir, Interpolator interpolator);
}
diff --git a/tycho-bundles/org.eclipse.tycho.core.shared/src/main/java/org/eclipse/tycho/core/shared/Interpolator.java b/tycho-bundles/org.eclipse.tycho.embedder.shared/src/main/java/org/eclipse/tycho/Interpolator.java
similarity index 93%
rename from tycho-bundles/org.eclipse.tycho.core.shared/src/main/java/org/eclipse/tycho/core/shared/Interpolator.java
rename to tycho-bundles/org.eclipse.tycho.embedder.shared/src/main/java/org/eclipse/tycho/Interpolator.java
index 0082038e32..5a33685000 100644
--- a/tycho-bundles/org.eclipse.tycho.core.shared/src/main/java/org/eclipse/tycho/core/shared/Interpolator.java
+++ b/tycho-bundles/org.eclipse.tycho.embedder.shared/src/main/java/org/eclipse/tycho/Interpolator.java
@@ -10,7 +10,7 @@
* Contributors:
* SAP SE - initial API and implementation
*******************************************************************************/
-package org.eclipse.tycho.core.shared;
+package org.eclipse.tycho;
public interface Interpolator {
diff --git a/tycho-bundles/org.eclipse.tycho.embedder.shared/src/main/java/org/eclipse/tycho/ReactorProject.java b/tycho-bundles/org.eclipse.tycho.embedder.shared/src/main/java/org/eclipse/tycho/ReactorProject.java
index 9ea17b5024..13497ab30e 100644
--- a/tycho-bundles/org.eclipse.tycho.embedder.shared/src/main/java/org/eclipse/tycho/ReactorProject.java
+++ b/tycho-bundles/org.eclipse.tycho.embedder.shared/src/main/java/org/eclipse/tycho/ReactorProject.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008, 2020 Sonatype Inc. and others.
+ * Copyright (c) 2008, 2022 Sonatype Inc. and others.
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
@@ -9,17 +9,21 @@
*
* Contributors:
* Sonatype Inc. - initial API and implementation
- * Christoph Läubrich - add getName() / combine directories
+ * Christoph Läubrich - add getName() / combine directories / getter for Interpolator
*******************************************************************************/
package org.eclipse.tycho;
import java.io.File;
+import java.util.Objects;
/**
* A Tycho project in the reactor.
*/
public interface ReactorProject extends IDependencyMetadata {
+ static final String CTX_INTERPOLATOR = "tycho.project.interpolator";
+ static final String CTX_BUILDPROPERTIESPARSER = "tycho.project.buildpropertiesparser";
+
/**
* Conventional sources jar Maven artifact classifier.
*/
@@ -66,6 +70,23 @@ public interface ReactorProject extends IDependencyMetadata {
public String getExpandedVersion();
// misc
+ /**
+ *
+ * @return the Interpolator for this project that could be used to resolve maven variable
+ * references
+ */
+ default Interpolator getInterpolator() {
+ return Objects.requireNonNull((Interpolator) getContextValue(CTX_INTERPOLATOR),
+ "No Interpolator found, has the TychoMavenLifecycleParticipant not run?");
+ }
+
+ default BuildProperties getBuildProperties() {
+ BuildPropertiesParser parser = Objects.requireNonNull(
+ (BuildPropertiesParser) getContextValue(CTX_BUILDPROPERTIESPARSER),
+ "No BuildPropertiesParser found, has the TychoMavenLifecycleParticipant not run?");
+ //we must always ask the parser here, it is expected that the parser caches the properties if the have not changed in the meanwhile
+ return parser.parse(this);
+ }
/**
* human-readable id used in error messages
diff --git a/tycho-bundles/org.eclipse.tycho.p2.resolver.impl.test/src/test/java/org/eclipse/tycho/p2/impl/publisher/repo/FeatureRootfileArtifactRepositoryTest.java b/tycho-bundles/org.eclipse.tycho.p2.resolver.impl.test/src/test/java/org/eclipse/tycho/p2/impl/publisher/repo/FeatureRootfileArtifactRepositoryTest.java
index 80e5620839..240c6c0a6a 100644
--- a/tycho-bundles/org.eclipse.tycho.p2.resolver.impl.test/src/test/java/org/eclipse/tycho/p2/impl/publisher/repo/FeatureRootfileArtifactRepositoryTest.java
+++ b/tycho-bundles/org.eclipse.tycho.p2.resolver.impl.test/src/test/java/org/eclipse/tycho/p2/impl/publisher/repo/FeatureRootfileArtifactRepositoryTest.java
@@ -23,7 +23,7 @@
import org.eclipse.equinox.p2.repository.artifact.IArtifactDescriptor;
import org.eclipse.equinox.p2.repository.artifact.spi.ArtifactDescriptor;
import org.eclipse.equinox.spi.p2.publisher.PublisherHelper;
-import org.eclipse.tycho.core.shared.BuildProperties;
+import org.eclipse.tycho.BuildProperties;
import org.eclipse.tycho.core.shared.BuildPropertiesImpl;
import org.eclipse.tycho.p2.impl.publisher.MavenPropertiesAdvice;
import org.eclipse.tycho.p2.impl.publisher.rootfiles.FeatureRootAdvice;
diff --git a/tycho-bundles/org.eclipse.tycho.p2.resolver.impl/OSGI-INF/generator.xml b/tycho-bundles/org.eclipse.tycho.p2.resolver.impl/OSGI-INF/generator.xml
index c5c3e66df4..07627a6ca1 100644
--- a/tycho-bundles/org.eclipse.tycho.p2.resolver.impl/OSGI-INF/generator.xml
+++ b/tycho-bundles/org.eclipse.tycho.p2.resolver.impl/OSGI-INF/generator.xml
@@ -5,7 +5,7 @@
-
+
@@ -13,7 +13,7 @@
-
+
@@ -21,6 +21,6 @@
-
+
diff --git a/tycho-bundles/org.eclipse.tycho.p2.resolver.impl/src/main/java/org/eclipse/tycho/p2/impl/publisher/AbstractMetadataGenerator.java b/tycho-bundles/org.eclipse.tycho.p2.resolver.impl/src/main/java/org/eclipse/tycho/p2/impl/publisher/AbstractMetadataGenerator.java
index 18ee05c886..609337099d 100644
--- a/tycho-bundles/org.eclipse.tycho.p2.resolver.impl/src/main/java/org/eclipse/tycho/p2/impl/publisher/AbstractMetadataGenerator.java
+++ b/tycho-bundles/org.eclipse.tycho.p2.resolver.impl/src/main/java/org/eclipse/tycho/p2/impl/publisher/AbstractMetadataGenerator.java
@@ -36,10 +36,11 @@
import org.eclipse.equinox.p2.publisher.PublisherResult;
import org.eclipse.equinox.p2.publisher.actions.ICapabilityAdvice;
import org.eclipse.equinox.p2.repository.artifact.IArtifactRepository;
+import org.eclipse.tycho.BuildProperties;
+import org.eclipse.tycho.BuildPropertiesParser;
import org.eclipse.tycho.IDependencyMetadata.DependencyMetadataType;
+import org.eclipse.tycho.Interpolator;
import org.eclipse.tycho.core.resolver.shared.OptionalResolutionAction;
-import org.eclipse.tycho.core.shared.BuildProperties;
-import org.eclipse.tycho.core.shared.BuildPropertiesParser;
import org.eclipse.tycho.core.shared.TargetEnvironment;
import org.eclipse.tycho.p2.impl.publisher.repo.TransientArtifactRepository;
import org.eclipse.tycho.p2.metadata.IArtifactFacade;
@@ -67,8 +68,9 @@ protected abstract List getPublisherActions(IArtifactFacade ar
protected abstract List getPublisherAdvice(IArtifactFacade artifact, PublisherOptions options);
- protected ICapabilityAdvice getExtraEntriesAdvice(IArtifactFacade artifact) {
- final IRequirement[] extraRequirements = extractExtraEntriesAsIURequirement(artifact.getLocation());
+ protected ICapabilityAdvice getExtraEntriesAdvice(IArtifactFacade artifact, Interpolator interpolator) {
+ final IRequirement[] extraRequirements = extractExtraEntriesAsIURequirement(artifact.getLocation(),
+ interpolator);
return new ICapabilityAdvice() {
@Override
public boolean isApplicable(String configSpec, boolean includeDefault, String id, Version version) {
@@ -92,8 +94,8 @@ public IRequirement[] getMetaRequiredCapabilities(InstallableUnitDescription iu)
};
}
- private IRequirement[] extractExtraEntriesAsIURequirement(File location) {
- BuildProperties buildProps = buildPropertiesParser.parse(location);
+ private IRequirement[] extractExtraEntriesAsIURequirement(File location, Interpolator interpolator) {
+ BuildProperties buildProps = buildPropertiesParser.parse(location, interpolator);
ArrayList result = new ArrayList<>();
for (Entry> entry : buildProps.getJarToExtraClasspathMap().entrySet()) {
createRequirementFromExtraClasspathProperty(result, entry.getValue());
diff --git a/tycho-bundles/org.eclipse.tycho.p2.resolver.impl/src/main/java/org/eclipse/tycho/p2/impl/publisher/P2GeneratorImpl.java b/tycho-bundles/org.eclipse.tycho.p2.resolver.impl/src/main/java/org/eclipse/tycho/p2/impl/publisher/P2GeneratorImpl.java
index 6bf538dbd8..ae8d0dc695 100644
--- a/tycho-bundles/org.eclipse.tycho.p2.resolver.impl/src/main/java/org/eclipse/tycho/p2/impl/publisher/P2GeneratorImpl.java
+++ b/tycho-bundles/org.eclipse.tycho.p2.resolver.impl/src/main/java/org/eclipse/tycho/p2/impl/publisher/P2GeneratorImpl.java
@@ -43,6 +43,7 @@
import org.eclipse.equinox.p2.publisher.eclipse.ProductAction;
import org.eclipse.equinox.p2.repository.artifact.IArtifactDescriptor;
import org.eclipse.equinox.p2.repository.artifact.spi.ArtifactDescriptor;
+import org.eclipse.tycho.Interpolator;
import org.eclipse.tycho.PackagingType;
import org.eclipse.tycho.core.resolver.shared.OptionalResolutionAction;
import org.eclipse.tycho.core.shared.TargetEnvironment;
@@ -56,6 +57,7 @@
import org.eclipse.tycho.p2.metadata.IP2Artifact;
import org.eclipse.tycho.p2.metadata.P2Generator;
import org.eclipse.tycho.p2.metadata.PublisherOptions;
+import org.eclipse.tycho.p2.metadata.ReactorProjectFacade;
import org.eclipse.tycho.p2.repository.RepositoryLayoutHelper;
@SuppressWarnings("restriction")
@@ -85,6 +87,7 @@ public Map generateMetadata(List artifacts
Map result = new LinkedHashMap<>();
for (IArtifactFacade artifact : artifacts) {
+
PublisherInfo publisherInfo = new PublisherInfo();
DependencyMetadata metadata;
@@ -355,10 +358,16 @@ private List getCategoryFiles(File projectLocation) {
@Override
protected List getPublisherAdvice(IArtifactFacade artifact, PublisherOptions options) {
+ Interpolator interpolator;
+ if (artifact instanceof ReactorProjectFacade) {
+ interpolator = ((ReactorProjectFacade) artifact).getReactorProject().getInterpolator();
+ } else {
+ interpolator = null;
+ }
ArrayList advice = new ArrayList<>();
advice.add(new MavenPropertiesAdvice(artifact.getGroupId(), artifact.getArtifactId(), artifact.getVersion(),
artifact.getClassifier()));
- advice.add(getExtraEntriesAdvice(artifact));
+ advice.add(getExtraEntriesAdvice(artifact, interpolator));
if (options.generateDownloadStatsProperty) {
advice.add(new DownloadStatsAdvice());
diff --git a/tycho-bundles/org.eclipse.tycho.p2.resolver.impl/src/main/java/org/eclipse/tycho/p2/impl/publisher/rootfiles/FeatureRootAdvice.java b/tycho-bundles/org.eclipse.tycho.p2.resolver.impl/src/main/java/org/eclipse/tycho/p2/impl/publisher/rootfiles/FeatureRootAdvice.java
index f24f9d61aa..76a4b485b6 100644
--- a/tycho-bundles/org.eclipse.tycho.p2.resolver.impl/src/main/java/org/eclipse/tycho/p2/impl/publisher/rootfiles/FeatureRootAdvice.java
+++ b/tycho-bundles/org.eclipse.tycho.p2.resolver.impl/src/main/java/org/eclipse/tycho/p2/impl/publisher/rootfiles/FeatureRootAdvice.java
@@ -24,10 +24,12 @@
import org.eclipse.equinox.internal.p2.publisher.FileSetDescriptor;
import org.eclipse.equinox.p2.metadata.Version;
import org.eclipse.equinox.p2.publisher.actions.IFeatureRootAdvice;
+import org.eclipse.tycho.BuildProperties;
+import org.eclipse.tycho.BuildPropertiesParser;
+import org.eclipse.tycho.Interpolator;
import org.eclipse.tycho.PackagingType;
-import org.eclipse.tycho.core.shared.BuildProperties;
-import org.eclipse.tycho.core.shared.BuildPropertiesParser;
import org.eclipse.tycho.p2.metadata.IArtifactFacade;
+import org.eclipse.tycho.p2.metadata.ReactorProjectFacade;
/**
* This class handles definitions of root files in build.properties according to
@@ -55,11 +57,17 @@ public FeatureRootAdvice(BuildProperties buildProperties, File baseDir, String a
*/
public static IFeatureRootAdvice createRootFileAdvice(IArtifactFacade featureArtifact,
BuildPropertiesParser buildPropertiesParser) {
+ Interpolator interpolator;
+ if (featureArtifact instanceof ReactorProjectFacade) {
+ interpolator = ((ReactorProjectFacade) featureArtifact).getReactorProject().getInterpolator();
+ } else {
+ interpolator = null;
+ }
File projectDir = getProjectBaseDir(featureArtifact);
if (projectDir != null) {
- FeatureRootAdvice result = new FeatureRootAdvice(buildPropertiesParser.parse(projectDir), projectDir,
- featureArtifact.getArtifactId());
+ FeatureRootAdvice result = new FeatureRootAdvice(buildPropertiesParser.parse(projectDir, interpolator),
+ projectDir, featureArtifact.getArtifactId());
if (result.hasRootFiles()) {
return result;
}
diff --git a/tycho-bundles/org.eclipse.tycho.p2.resolver.impl/src/main/java/org/eclipse/tycho/p2/impl/publisher/rootfiles/RootPropertiesParser.java b/tycho-bundles/org.eclipse.tycho.p2.resolver.impl/src/main/java/org/eclipse/tycho/p2/impl/publisher/rootfiles/RootPropertiesParser.java
index 2f4ffea8e8..86a0a5048e 100644
--- a/tycho-bundles/org.eclipse.tycho.p2.resolver.impl/src/main/java/org/eclipse/tycho/p2/impl/publisher/rootfiles/RootPropertiesParser.java
+++ b/tycho-bundles/org.eclipse.tycho.p2.resolver.impl/src/main/java/org/eclipse/tycho/p2/impl/publisher/rootfiles/RootPropertiesParser.java
@@ -21,7 +21,7 @@
import java.util.Map;
import java.util.Map.Entry;
-import org.eclipse.tycho.core.shared.BuildProperties;
+import org.eclipse.tycho.BuildProperties;
public class RootPropertiesParser {
static class ParsingResult {
diff --git a/tycho-bundles/org.eclipse.tycho.p2.tools.impl/src/main/java/org/eclipse/tycho/p2/tools/publisher/ExpandedProduct.java b/tycho-bundles/org.eclipse.tycho.p2.tools.impl/src/main/java/org/eclipse/tycho/p2/tools/publisher/ExpandedProduct.java
index f7a47ed8e8..75d18dd1cf 100644
--- a/tycho-bundles/org.eclipse.tycho.p2.tools.impl/src/main/java/org/eclipse/tycho/p2/tools/publisher/ExpandedProduct.java
+++ b/tycho-bundles/org.eclipse.tycho.p2.tools.impl/src/main/java/org/eclipse/tycho/p2/tools/publisher/ExpandedProduct.java
@@ -29,7 +29,7 @@
import org.eclipse.equinox.p2.metadata.IVersionedId;
import org.eclipse.equinox.p2.repository.IRepositoryReference;
import org.eclipse.tycho.ArtifactType;
-import org.eclipse.tycho.core.shared.Interpolator;
+import org.eclipse.tycho.Interpolator;
import org.eclipse.tycho.core.shared.MavenLogger;
import org.eclipse.tycho.core.shared.MultiLineLogger;
import org.eclipse.tycho.core.shared.VersioningHelper;
diff --git a/tycho-bundles/org.eclipse.tycho.p2.tools.impl/src/main/java/org/eclipse/tycho/p2/tools/publisher/PublishProductToolImpl.java b/tycho-bundles/org.eclipse.tycho.p2.tools.impl/src/main/java/org/eclipse/tycho/p2/tools/publisher/PublishProductToolImpl.java
index 4b839edbd0..e77c25fb61 100644
--- a/tycho-bundles/org.eclipse.tycho.p2.tools.impl/src/main/java/org/eclipse/tycho/p2/tools/publisher/PublishProductToolImpl.java
+++ b/tycho-bundles/org.eclipse.tycho.p2.tools.impl/src/main/java/org/eclipse/tycho/p2/tools/publisher/PublishProductToolImpl.java
@@ -33,9 +33,9 @@
import org.eclipse.equinox.p2.repository.metadata.IMetadataRepository;
import org.eclipse.tycho.ArtifactKey;
import org.eclipse.tycho.ArtifactType;
+import org.eclipse.tycho.Interpolator;
import org.eclipse.tycho.core.resolver.shared.DependencySeed;
import org.eclipse.tycho.core.shared.BuildFailureException;
-import org.eclipse.tycho.core.shared.Interpolator;
import org.eclipse.tycho.core.shared.MavenLogger;
import org.eclipse.tycho.p2.target.ArtifactTypeHelper;
import org.eclipse.tycho.p2.target.P2TargetPlatform;
diff --git a/tycho-bundles/org.eclipse.tycho.p2.tools.impl/src/main/java/org/eclipse/tycho/p2/tools/publisher/PublisherServiceFactoryImpl.java b/tycho-bundles/org.eclipse.tycho.p2.tools.impl/src/main/java/org/eclipse/tycho/p2/tools/publisher/PublisherServiceFactoryImpl.java
index ff242e4b8f..af4ed41314 100644
--- a/tycho-bundles/org.eclipse.tycho.p2.tools.impl/src/main/java/org/eclipse/tycho/p2/tools/publisher/PublisherServiceFactoryImpl.java
+++ b/tycho-bundles/org.eclipse.tycho.p2.tools.impl/src/main/java/org/eclipse/tycho/p2/tools/publisher/PublisherServiceFactoryImpl.java
@@ -14,8 +14,8 @@
import java.util.List;
+import org.eclipse.tycho.Interpolator;
import org.eclipse.tycho.ReactorProject;
-import org.eclipse.tycho.core.shared.Interpolator;
import org.eclipse.tycho.core.shared.MavenContext;
import org.eclipse.tycho.core.shared.TargetEnvironment;
import org.eclipse.tycho.p2.target.P2TargetPlatform;
diff --git a/tycho-bundles/org.eclipse.tycho.p2.tools.shared/src/main/java/org/eclipse/tycho/p2/tools/publisher/facade/PublisherServiceFactory.java b/tycho-bundles/org.eclipse.tycho.p2.tools.shared/src/main/java/org/eclipse/tycho/p2/tools/publisher/facade/PublisherServiceFactory.java
index 6fd6d07bd4..e117ee6829 100644
--- a/tycho-bundles/org.eclipse.tycho.p2.tools.shared/src/main/java/org/eclipse/tycho/p2/tools/publisher/facade/PublisherServiceFactory.java
+++ b/tycho-bundles/org.eclipse.tycho.p2.tools.shared/src/main/java/org/eclipse/tycho/p2/tools/publisher/facade/PublisherServiceFactory.java
@@ -14,8 +14,8 @@
import java.util.List;
+import org.eclipse.tycho.Interpolator;
import org.eclipse.tycho.ReactorProject;
-import org.eclipse.tycho.core.shared.Interpolator;
import org.eclipse.tycho.core.shared.TargetEnvironment;
public interface PublisherServiceFactory {
diff --git a/tycho-bundles/org.eclipse.tycho.p2.tools.tests/src/test/java/org/eclipse/tycho/p2/tools/publisher/PublishProductToolTest.java b/tycho-bundles/org.eclipse.tycho.p2.tools.tests/src/test/java/org/eclipse/tycho/p2/tools/publisher/PublishProductToolTest.java
index 1344f95548..0b0b1b70c5 100644
--- a/tycho-bundles/org.eclipse.tycho.p2.tools.tests/src/test/java/org/eclipse/tycho/p2/tools/publisher/PublishProductToolTest.java
+++ b/tycho-bundles/org.eclipse.tycho.p2.tools.tests/src/test/java/org/eclipse/tycho/p2/tools/publisher/PublishProductToolTest.java
@@ -48,10 +48,10 @@
import org.eclipse.equinox.p2.metadata.IInstallableUnit;
import org.eclipse.equinox.p2.query.QueryUtil;
+import org.eclipse.tycho.Interpolator;
import org.eclipse.tycho.artifacts.DependencyResolutionException;
import org.eclipse.tycho.core.resolver.shared.DependencySeed;
import org.eclipse.tycho.core.shared.BuildFailureException;
-import org.eclipse.tycho.core.shared.Interpolator;
import org.eclipse.tycho.core.shared.TargetEnvironment;
import org.eclipse.tycho.p2.target.FinalTargetPlatformImpl;
import org.eclipse.tycho.p2.target.P2TargetPlatform;
diff --git a/tycho-bundles/org.eclipse.tycho.test.utils/src/main/java/org/eclipse/tycho/test/util/BuildPropertiesParserForTesting.java b/tycho-bundles/org.eclipse.tycho.test.utils/src/main/java/org/eclipse/tycho/test/util/BuildPropertiesParserForTesting.java
index 09c35dfc8b..2047a9afbe 100644
--- a/tycho-bundles/org.eclipse.tycho.test.utils/src/main/java/org/eclipse/tycho/test/util/BuildPropertiesParserForTesting.java
+++ b/tycho-bundles/org.eclipse.tycho.test.utils/src/main/java/org/eclipse/tycho/test/util/BuildPropertiesParserForTesting.java
@@ -19,14 +19,15 @@
import java.io.InputStream;
import java.util.Properties;
-import org.eclipse.tycho.core.shared.BuildProperties;
+import org.eclipse.tycho.BuildProperties;
+import org.eclipse.tycho.BuildPropertiesParser;
+import org.eclipse.tycho.Interpolator;
import org.eclipse.tycho.core.shared.BuildPropertiesImpl;
-import org.eclipse.tycho.core.shared.BuildPropertiesParser;
public class BuildPropertiesParserForTesting implements BuildPropertiesParser {
@Override
- public BuildProperties parse(File baseDir) {
+ public BuildProperties parse(File baseDir, Interpolator interpolator) {
Properties props = new Properties();
readBuildProperties(baseDir, props);
diff --git a/tycho-core/src/main/java/org/eclipse/tycho/core/maven/TychoInterpolator.java b/tycho-core/src/main/java/org/eclipse/tycho/core/maven/TychoInterpolator.java
index a1dffef583..595894d701 100644
--- a/tycho-core/src/main/java/org/eclipse/tycho/core/maven/TychoInterpolator.java
+++ b/tycho-core/src/main/java/org/eclipse/tycho/core/maven/TychoInterpolator.java
@@ -21,7 +21,7 @@
import org.codehaus.plexus.interpolation.SingleResponseValueSource;
import org.codehaus.plexus.interpolation.StringSearchInterpolator;
import org.codehaus.plexus.interpolation.ValueSource;
-import org.eclipse.tycho.core.shared.Interpolator;
+import org.eclipse.tycho.Interpolator;
/**
* Class thats interpolates string values like ${project.artifactId}. It is using the
diff --git a/tycho-core/src/main/java/org/eclipse/tycho/core/maven/TychoMavenLifecycleParticipant.java b/tycho-core/src/main/java/org/eclipse/tycho/core/maven/TychoMavenLifecycleParticipant.java
index 525d8ec6d7..73f330ec35 100644
--- a/tycho-core/src/main/java/org/eclipse/tycho/core/maven/TychoMavenLifecycleParticipant.java
+++ b/tycho-core/src/main/java/org/eclipse/tycho/core/maven/TychoMavenLifecycleParticipant.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008, 2020 Sonatype Inc. and others.
+ * Copyright (c) 2008, 2022 Sonatype Inc. and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -8,7 +8,8 @@
* Contributors:
* Sonatype Inc. - initial API and implementation
* Bachmann electronic GmbH - Bug 457314 - handle null as tycho version
- * Christoph Läubrich - Bug 569829 - TychoMavenLifecycleParticipant should respect fail-at-end flag / error output is missing
+ * Christoph Läubrich - Bug 569829 - TychoMavenLifecycleParticipant should respect fail-at-end flag / error output is missing
+ * - Issue 557 - BuildPropertiesParser should use reactor project instead of basedir
*******************************************************************************/
package org.eclipse.tycho.core.maven;
@@ -42,6 +43,7 @@
import org.codehaus.plexus.logging.Logger;
import org.codehaus.plexus.personality.plexus.lifecycle.phase.Disposable;
import org.eclipse.sisu.equinox.EquinoxServiceFactory;
+import org.eclipse.tycho.BuildPropertiesParser;
import org.eclipse.tycho.ReactorProject;
import org.eclipse.tycho.artifacts.DependencyResolutionException;
import org.eclipse.tycho.core.osgitools.BundleReader;
@@ -74,6 +76,9 @@ public class TychoMavenLifecycleParticipant extends AbstractMavenLifecyclePartic
@Requirement
private Logger log;
+ @Requirement
+ private BuildPropertiesParser buildPropertiesParser;
+
public TychoMavenLifecycleParticipant() {
// needed for plexus
}
@@ -99,7 +104,11 @@ public void afterProjectsRead(MavenSession session) throws MavenExecutionExcepti
configureComponents(session);
for (MavenProject project : projects) {
- resolver.setupProject(session, project, DefaultReactorProject.adapt(project));
+ ReactorProject reactorProject = DefaultReactorProject.adapt(project);
+ reactorProject.setContextValue(ReactorProject.CTX_INTERPOLATOR,
+ new TychoInterpolator(session, project));
+ reactorProject.setContextValue(ReactorProject.CTX_BUILDPROPERTIESPARSER, buildPropertiesParser);
+ resolver.setupProject(session, project, reactorProject);
}
resolveProjects(session, projects);
diff --git a/tycho-core/src/main/java/org/eclipse/tycho/core/osgitools/BuildPropertiesParserImpl.java b/tycho-core/src/main/java/org/eclipse/tycho/core/osgitools/BuildPropertiesParserImpl.java
index 78d3215196..35095b412a 100644
--- a/tycho-core/src/main/java/org/eclipse/tycho/core/osgitools/BuildPropertiesParserImpl.java
+++ b/tycho-core/src/main/java/org/eclipse/tycho/core/osgitools/BuildPropertiesParserImpl.java
@@ -21,24 +21,22 @@
import java.util.Map.Entry;
import java.util.Properties;
-import org.apache.maven.execution.MavenSession;
import org.apache.maven.plugin.LegacySupport;
-import org.apache.maven.project.MavenProject;
import org.codehaus.plexus.component.annotations.Component;
import org.codehaus.plexus.component.annotations.Requirement;
import org.codehaus.plexus.logging.Logger;
import org.codehaus.plexus.personality.plexus.lifecycle.phase.Disposable;
-import org.eclipse.tycho.core.maven.TychoInterpolator;
-import org.eclipse.tycho.core.shared.BuildProperties;
+import org.eclipse.tycho.BuildProperties;
+import org.eclipse.tycho.BuildPropertiesParser;
+import org.eclipse.tycho.Interpolator;
+import org.eclipse.tycho.ReactorProject;
import org.eclipse.tycho.core.shared.BuildPropertiesImpl;
-import org.eclipse.tycho.core.shared.BuildPropertiesParser;
-import org.eclipse.tycho.core.utils.MavenSessionUtils;
@Component(role = BuildPropertiesParser.class)
public class BuildPropertiesParserImpl implements BuildPropertiesParser, Disposable {
- @Requirement
- private LegacySupport legacySupport;
+// @Requirement
+// private LegacySupport legacySupport;
@Requirement
private Logger logger;
@@ -55,19 +53,27 @@ public BuildPropertiesParserImpl() {
* @param legacySupport
*/
protected BuildPropertiesParserImpl(LegacySupport legacySupport, Logger logger) {
- this.legacySupport = legacySupport;
+// this.legacySupport = legacySupport;
this.logger = logger;
}
@Override
+ public BuildProperties parse(ReactorProject project) {
+ return parse(project.getBasedir(), project.getInterpolator());
+ }
+
public BuildProperties parse(File baseDir) {
+ return parse(baseDir, null);
+ }
+
+ public BuildProperties parse(File baseDir, Interpolator interpolator) {
File propsFile = new File(baseDir, BUILD_PROPERTIES);
long lastModified = propsFile.lastModified();
String filePath = propsFile.getAbsolutePath();
BuildPropertiesImpl buildProperties = cache.get(filePath);
if (buildProperties == null || lastModified > buildProperties.getTimestamp()) {
Properties properties = readProperties(propsFile);
- interpolate(properties, baseDir);
+ interpolate(properties, interpolator);
buildProperties = new BuildPropertiesImpl(properties, lastModified);
cache.put(filePath, buildProperties);
}
@@ -100,25 +106,10 @@ protected static Properties readProperties(File propsFile) {
return properties;
}
- protected void interpolate(Properties properties, File baseDir) {
- if (properties.isEmpty()) {
+ protected void interpolate(Properties properties, Interpolator interpolator) {
+ if (properties.isEmpty() || interpolator == null) {
return;
}
- MavenSession mavenSession = legacySupport.getSession();
- if (mavenSession == null) {
- logger.warn("No maven session available, values in the build.properties will not be interpolated!");
- return;
- }
- // find the maven project for the currently used basedir, so that the correct maven project is used by the interpolator.
- // if no project could be found, it does not make sense to interpolate the properties
- MavenProject mavenProject = MavenSessionUtils.getMavenProject(mavenSession, baseDir);
- if (mavenProject == null) {
- logger.warn("No maven project found for baseDir '" + baseDir.getAbsolutePath()
- + "', values in the build.properties will not be interpolated!");
- return;
- }
- TychoInterpolator interpolator = new TychoInterpolator(mavenSession, mavenProject);
-
for (Entry