Skip to content

Commit a4baaf3

Browse files
authored
Merge pull request #65 from egineering-llc/revert-63-release/1.7.0
Revert "Release/1.7.0"
2 parents d198f8b + 89f9ecb commit a4baaf3

13 files changed

+105
-252
lines changed

README.md

Lines changed: 32 additions & 54 deletions
Large diffs are not rendered by default.

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
<groupId>com.e-gineering</groupId>
1010
<artifactId>gitflow-helper-maven-plugin</artifactId>
1111

12-
<version>1.7.0</version>
12+
<version>1.6.0</version>
1313
<packaging>maven-plugin</packaging>
1414

1515
<name>gitflow-helper-maven-plugin</name>

src/main/java/com/e_gineering/maven/gitflowhelper/AbstractGitflowBasedRepositoryMojo.java

Lines changed: 64 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,11 @@
99
import org.apache.maven.plugins.annotations.Parameter;
1010
import org.apache.maven.project.MavenProjectHelper;
1111
import org.codehaus.plexus.util.FileUtils;
12-
import org.eclipse.aether.DefaultRepositorySystemSession;
1312
import org.eclipse.aether.RepositorySystemSession;
1413
import org.eclipse.aether.artifact.DefaultArtifact;
1514
import org.eclipse.aether.impl.ArtifactResolver;
16-
import org.eclipse.aether.internal.impl.EnhancedLocalRepositoryManagerFactory;
1715
import org.eclipse.aether.repository.LocalRepository;
1816
import org.eclipse.aether.repository.RemoteRepository;
19-
import org.eclipse.aether.repository.RepositoryPolicy;
2017
import org.eclipse.aether.resolution.ArtifactRequest;
2118
import org.eclipse.aether.resolution.ArtifactResolutionException;
2219
import org.eclipse.aether.resolution.ArtifactResult;
@@ -30,6 +27,7 @@
3027
import java.io.InputStreamReader;
3128
import java.io.OutputStreamWriter;
3229
import java.io.PrintWriter;
30+
import java.lang.reflect.Field;
3331
import java.nio.charset.Charset;
3432
import java.nio.file.Files;
3533
import java.util.ArrayList;
@@ -56,10 +54,7 @@ public abstract class AbstractGitflowBasedRepositoryMojo extends AbstractGitflow
5654
protected String snapshotDeploymentRepository;
5755

5856
@Parameter(defaultValue = "${repositorySystemSession}", required = true)
59-
protected RepositorySystemSession session;
60-
61-
@Component
62-
protected EnhancedLocalRepositoryManagerFactory localRepositoryManagerFactory;
57+
private RepositorySystemSession session;
6358

6459
@Parameter(defaultValue = "${project.build.directory}", required = true)
6560
protected File buildDirectory;
@@ -114,7 +109,7 @@ protected ArtifactRepository getDeploymentRepository(final String altRepository)
114109
* @throws MojoExecutionException
115110
* @throws MojoFailureException
116111
*/
117-
protected RemoteRepository getRepository(final String altRepository) throws MojoExecutionException, MojoFailureException {
112+
private RemoteRepository getRepository(final String altRepository) throws MojoExecutionException, MojoFailureException {
118113
if (getLog().isDebugEnabled()) {
119114
getLog().debug("Creating remote Aether repository (to resolve remote artifacts) for: " + altRepository);
120115
}
@@ -142,14 +137,15 @@ protected RemoteRepository getRepository(final String altRepository) throws Mojo
142137
}
143138

144139
private String getCoordinates(ArtifactResult result) {
145-
StringBuilder buffer = new StringBuilder(128);
146-
buffer.append(result.getArtifact().getGroupId());
147-
buffer.append(':').append(result.getArtifact().getArtifactId());
148-
buffer.append(':').append(result.getArtifact().getExtension());
149-
if (result.getArtifact().getClassifier().length() > 0) {
150-
buffer.append(':').append(result.getArtifact().getClassifier());
140+
StringBuilder buffer = new StringBuilder( 128 );
141+
buffer.append( result.getArtifact().getGroupId() );
142+
buffer.append( ':' ).append( result.getArtifact().getArtifactId() );
143+
buffer.append( ':' ).append( result.getArtifact().getExtension() );
144+
if ( result.getArtifact().getClassifier().length() > 0 )
145+
{
146+
buffer.append( ':' ).append( result.getArtifact().getClassifier() );
151147
}
152-
buffer.append(':').append(result.getArtifact().getBaseVersion());
148+
buffer.append( ':' ).append( result.getArtifact().getBaseVersion() );
153149
return buffer.toString();
154150
}
155151

@@ -187,46 +183,47 @@ private String getCoordinates(org.apache.maven.artifact.Artifact artifact) {
187183
* group:artifact:type:classifier:version
188184
*/
189185
protected void attachArtifactCatalog() throws MojoExecutionException {
190-
getLog().info("Cataloging Artifacts for promotion & reattachment: " + project.getBuild().getDirectory());
186+
getLog().info("Cataloging Artifacts for promotion & reattachment: " + project.getBuild().getDirectory());
191187

192-
File catalog = new File(buildDirectory, project.getArtifact().getArtifactId() + ".txt");
188+
File catalog = new File(buildDirectory, project.getArtifact().getArtifactId() + ".txt");
193189

194-
PrintWriter writer = null;
190+
PrintWriter writer = null;
195191

196-
try {
197-
catalog.delete();
198-
buildDirectory.mkdirs();
199-
writer = new PrintWriter(new OutputStreamWriter(new FileOutputStream(catalog), Charset.forName("UTF-8")));
200-
201-
if (project.getArtifact() != null && project.getArtifact().getFile() != null &&
202-
project.getArtifact().getFile().exists() && !project.getArtifact().getFile().isDirectory()) {
203-
String coords = getCoordinates(project.getArtifact());
204-
if (!coords.isEmpty()) {
205-
getLog().info("Cataloging: " + coords);
206-
writer.println(coords);
192+
try {
193+
catalog.delete();
194+
buildDirectory.mkdirs();
195+
writer = new PrintWriter(new OutputStreamWriter(new FileOutputStream(catalog), Charset.forName("UTF-8")));
196+
197+
if (project.getArtifact() != null && project.getArtifact().getFile() != null &&
198+
project.getArtifact().getFile().exists() && !project.getArtifact().getFile().isDirectory())
199+
{
200+
String coords = getCoordinates(project.getArtifact());
201+
if (!coords.isEmpty()){
202+
getLog().info("Cataloging: " + coords);
203+
writer.println(coords);
204+
}
205+
} else {
206+
getLog().info("No primary artifact to catalog, cataloging attached artifacts instead.");
207207
}
208-
} else {
209-
getLog().info("No primary artifact to catalog, cataloging attached artifacts instead.");
210-
}
211208

212-
// Iterate the attached artifacts.
213-
for (org.apache.maven.artifact.Artifact artifact : project.getAttachedArtifacts()) {
214-
String coords = getCoordinates(artifact);
215-
if (!coords.isEmpty()) {
216-
getLog().info("Cataloging: " + coords);
217-
writer.println(coords);
209+
// Iterate the attached artifacts.
210+
for (org.apache.maven.artifact.Artifact artifact : project.getAttachedArtifacts()) {
211+
String coords = getCoordinates(artifact);
212+
if (!coords.isEmpty()) {
213+
getLog().info("Cataloging: " + coords);
214+
writer.println(coords);
215+
}
218216
}
219-
}
220217

221-
getLog().info("Attaching catalog artifact: " + catalog);
222-
projectHelper.attachArtifact(project, "txt", "catalog", catalog);
223-
} catch (IOException ioe) {
224-
throw new MojoExecutionException("Failed to create catalog of artifacts", ioe);
225-
} finally {
226-
if (writer != null) {
227-
writer.close();
218+
getLog().info("Attaching catalog artifact: " + catalog);
219+
projectHelper.attachArtifact(project, "txt", "catalog", catalog);
220+
} catch (IOException ioe) {
221+
throw new MojoExecutionException("Failed to create catalog of artifacts", ioe);
222+
} finally {
223+
if (writer != null) {
224+
writer.close();
225+
}
228226
}
229-
}
230227
}
231228

232229
/**
@@ -253,30 +250,35 @@ protected void attachExistingArtifacts(final String sourceRepository, final bool
253250
// A place to store our resolved files...
254251
List<ArtifactResult> resolvedArtifacts = new ArrayList<ArtifactResult>();
255252

253+
// Keep track of the original base directory.
254+
Field localBaseDir = null;
255+
File originalBaseDir = session.getLocalRepositoryManager().getRepository().getBasedir();
256256

257-
// Use a custom repository session, setup to force a few behaviors we like.
258-
DefaultRepositorySystemSession tempSession = new DefaultRepositorySystemSession(session);
259-
tempSession.setUpdatePolicy(RepositoryPolicy.UPDATE_POLICY_ALWAYS);
260-
257+
// Disable the local repository - using a bit of reflection that I wish we didn't need to use.
261258
File tempRepo = null;
262259
if (disableLocal) {
263-
getLog().info("Disabling local repository @ " + tempSession.getLocalRepository().getBasedir());
260+
getLog().info("Disabling local repository @ " + session.getLocalRepository().getBasedir());
264261
try {
262+
localBaseDir = LocalRepository.class.getDeclaredField("basedir");
263+
localBaseDir.setAccessible(true);
264+
265+
// Generate a new temp directory.
265266
tempRepo = Files.createTempDirectory("gitflow-helper-maven-plugin-repo").toFile();
266267

267268
getLog().info("Using temporary local repository @ " + tempRepo.getAbsolutePath());
268-
tempSession.setLocalRepositoryManager(localRepositoryManagerFactory.newInstance(tempSession, new LocalRepository(tempRepo)));
269+
localBaseDir.set(session.getLocalRepositoryManager().getRepository(), tempRepo);
269270
} catch (Exception ex) {
270271
getLog().warn("Failed to disable local repository path.", ex);
271272
}
272273
}
273274

275+
274276
List<ArtifactRequest> requiredArtifacts = new ArrayList<ArtifactRequest>();
275277

276278
// Locate our text catalog classifier file. :-)
277279
BufferedReader reader = null;
278280
try {
279-
ArtifactResult catalogResult = artifactResolver.resolveArtifact(tempSession, new ArtifactRequest(new DefaultArtifact(project.getGroupId(), project.getArtifactId(), "catalog", "txt", project.getVersion()), remoteRepositories, null));
281+
ArtifactResult catalogResult = artifactResolver.resolveArtifact(session, new ArtifactRequest(new DefaultArtifact(project.getGroupId(), project.getArtifactId(), "catalog", "txt", project.getVersion()), remoteRepositories, null));
280282
resolvedArtifacts.add(catalogResult);
281283

282284
if (catalogResult.isResolved()) {
@@ -299,15 +301,14 @@ protected void attachExistingArtifacts(final String sourceRepository, final bool
299301
if (reader != null) {
300302
try {
301303
reader.close();
302-
} catch (IOException ioe) {
303-
}
304+
} catch (IOException ioe) {}
304305
}
305306
}
306307

307308

308309
// Resolve the artifacts from the catalog (if there are any)
309310
try {
310-
resolvedArtifacts.addAll(artifactResolver.resolveArtifacts(tempSession, requiredArtifacts));
311+
resolvedArtifacts.addAll(artifactResolver.resolveArtifacts(session, requiredArtifacts));
311312
} catch (ArtifactResolutionException are) {
312313
throw new MojoExecutionException("Failed to resolve the required project files from: " + sourceRepository, are);
313314
}
@@ -338,6 +339,12 @@ protected void attachExistingArtifacts(final String sourceRepository, final bool
338339

339340
// Restore the local repository, again using reflection.
340341
if (disableLocal) {
342+
try {
343+
localBaseDir.set(session.getLocalRepositoryManager().getRepository(), originalBaseDir);
344+
localBaseDir.setAccessible(false);
345+
} catch (Exception ex) {
346+
getLog().warn("Failed to restore original local repository path.", ex);
347+
}
341348
if (tempRepo != null) {
342349
try {
343350
FileUtils.deleteDirectory(tempRepo);

src/main/java/com/e_gineering/maven/gitflowhelper/AbstractGitflowBranchMojo.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,6 @@ public abstract class AbstractGitflowBranchMojo extends AbstractMojo {
3333
@Parameter(defaultValue = "(origin/)?master", property = "masterBranchPattern", required = true)
3434
private String masterBranchPattern;
3535

36-
@Parameter(defaultValue = "(origin/)?support/(.*)", property = "supportBranchPattern", required = true)
37-
private String supportBranchPattern;
38-
3936
@Parameter(defaultValue = "(origin/)?release/(.*)", property = "releaseBranchPattern", required = true)
4037
private String releaseBranchPattern;
4138

@@ -94,8 +91,6 @@ public void execute() throws MojoExecutionException, MojoFailureException {
9491
*/
9592
if (gitBranch.matches(masterBranchPattern)) {
9693
logExecute(GitBranchType.MASTER, gitBranch, masterBranchPattern);
97-
} else if (gitBranch.matches(supportBranchPattern)) {
98-
logExecute(GitBranchType.SUPPORT, gitBranch, supportBranchPattern);
9994
} else if (gitBranch.matches(releaseBranchPattern)) {
10095
logExecute(GitBranchType.RELEASE, gitBranch, releaseBranchPattern);
10196
} else if (gitBranch.matches(hotfixBranchPattern)) {

src/main/java/com/e_gineering/maven/gitflowhelper/AttachDeployedArtifactsMojo.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,7 @@ public class AttachDeployedArtifactsMojo extends AbstractGitflowBasedRepositoryM
1616
@Override
1717
protected void execute(GitBranchType type, String gitBranch, String branchPattern) throws MojoExecutionException, MojoFailureException {
1818
switch (type) {
19-
case MASTER:
20-
case SUPPORT:
21-
{
19+
case MASTER: {
2220
getLog().info("Attaching artifacts from release repository...");
2321
attachExistingArtifacts(releaseDeploymentRepository, true);
2422
break;

src/main/java/com/e_gineering/maven/gitflowhelper/EnforceVersionsMojo.java

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -28,18 +28,11 @@ protected void execute(final GitBranchType type, final String gitBranch, final S
2828
throw new MojoFailureException("The current git branch: [" + gitBranch + "] is defined as a release branch. The maven project version: [" + project.getVersion() + "] is currently a snapshot version.");
2929
}
3030

31-
// Non-master version branches require a pom version match of some kind to the branch subgroups.
32-
if (gitMatcher.groupCount() > 0) {
33-
// HOTFIX and RELEASE branches require an exact match to the last subgroup.
34-
if ((GitBranchType.RELEASE.equals(type) || GitBranchType.HOTFIX.equals(type)) && !gitMatcher.group(gitMatcher.groupCount()).trim().equals(project.getVersion().trim())) {
31+
// Expect the last group on non-master branches to match (exactly) the current projectVersion. (only release / hotfix branches)
32+
if (gitMatcher.groupCount() > 0 && !GitBranchType.MASTER.equals(type)) {
33+
if (!gitMatcher.group(gitMatcher.groupCount()).trim().equals(project.getVersion().trim())) {
3534
throw new MojoFailureException("The current git branch: [" + gitBranch + "] expected the maven project version to be: [" + gitMatcher.group(gitMatcher.groupCount()).trim() + "], but the maven project version is: [" + project.getVersion() + "]");
3635
}
37-
38-
// SUPPORT branches require a 'starts with' match of the maven project version to the subgroup.
39-
// ex: /origin/support/3.1 must have a maven version that starts with "3.1", ala: "3.1.2"
40-
if (GitBranchType.SUPPORT.equals(type) && !project.getVersion().startsWith(gitMatcher.group(gitMatcher.groupCount()).trim())) {
41-
throw new MojoFailureException("The current git branch: [" + gitBranch + "] expected the maven project version to start with: [" + gitMatcher.group(gitMatcher.groupCount()).trim() + "], but the maven project version is: [" + project.getVersion() + "]");
42-
}
4336
}
4437
}
4538
} else if (GitBranchType.DEVELOPMENT.equals(type) && !ArtifactUtils.isSnapshot(project.getVersion())) {

src/main/java/com/e_gineering/maven/gitflowhelper/GitBranchType.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,11 @@
77
*/
88
public enum GitBranchType {
99
MASTER,
10-
SUPPORT,
1110
RELEASE,
1211
HOTFIX,
1312
DEVELOPMENT,
1413
OTHER,
1514
UNDEFINED;
1615

17-
static final EnumSet<GitBranchType> VERSIONED_TYPES = EnumSet.of(GitBranchType.MASTER, GitBranchType.SUPPORT, GitBranchType.RELEASE, GitBranchType.HOTFIX);
16+
static final EnumSet<GitBranchType> VERSIONED_TYPES = EnumSet.of(GitBranchType.MASTER, GitBranchType.RELEASE, GitBranchType.HOTFIX);
1817
}

src/main/java/com/e_gineering/maven/gitflowhelper/MasterPromoteExtension.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,7 @@ public void afterProjectsRead(MavenSession session) throws MavenExecutionExcepti
6565
try {
6666
pluginsToRetain.add(descriptorCreator.findPluginForPrefix(prefix, session));
6767
} catch (NoPluginFoundForPrefixException ex) {
68-
logger.warn("gitflow-helper-maven-plugin: Unable to resolve project plugin for prefix: " + prefix + " for goal: " + goal);
69-
// throw new MavenExecutionException("Unable to resolve plugin for prefix: " + prefix, ex);
68+
throw new MavenExecutionException("Unable to resolve plugin for prefix: " + prefix, ex);
7069
}
7170
}
7271
}
@@ -129,10 +128,7 @@ public void afterProjectsRead(MavenSession session) throws MavenExecutionExcepti
129128
logger.info("gitflow-helper-maven-plugin: Enabling MasterPromoteExtension. GIT_BRANCH: [" + gitBranch + "] matches masterBranchPattern: [" + masterBranchPattern + "]");
130129

131130
for (MavenProject project : session.getProjects()) {
132-
// Drop all the plugins from the build except for the gitflow-helper-maven-plugin, or plugins we
133-
// invoked goals for which could be mapped back to plugins in our project build.
134-
// Goals invoked from the commandline which cannot be mapped back to our project, will get warnings, but should still execute.
135-
// If someone is on 'master' and starts executing goals, we need to allow them to do that.
131+
// Drop all the plugins from the build except for the gitflow-helper-maven-plugin.
136132
project.getBuildPlugins().removeAll(pluginsToDrop.get(project));
137133
}
138134
}

src/main/java/com/e_gineering/maven/gitflowhelper/PromoteMasterMojo.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ protected void execute(final GitBranchType type, final String gitBranch, final S
2828
break;
2929
}
3030

31-
case SUPPORT:
3231
case MASTER: {
3332
getLog().info("Resolving & Reattaching existing artifacts from stageDeploymentRepository [" + stageDeploymentRepository + "]");
3433

src/main/java/com/e_gineering/maven/gitflowhelper/RetargetDeployMojo.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ protected void execute(final GitBranchType type, final String gitBranch, final S
1818
}
1919

2020
switch (type) {
21-
case SUPPORT:
2221
case MASTER: {
2322
getLog().info("Setting release artifact repository to: [" + releaseDeploymentRepository + "]");
2423
project.setSnapshotArtifactRepository(null);

0 commit comments

Comments
 (0)