HHH-11282 - Support m2e/Eclipse integration in hibernate-enhance-maven-plugin

This commit is contained in:
Craig Andrews 2016-11-29 12:20:12 -05:00 committed by Steve Ebersole
parent cff4ea1ce6
commit 5f8db1066d
4 changed files with 60 additions and 28 deletions

View File

@ -16,6 +16,7 @@ repositories {
} }
processResources { processResources {
include "**/lifecycle-mapping-metadata.xml"
include "**/plugin-help.xml" include "**/plugin-help.xml"
into processResources.destinationDir into processResources.destinationDir
filter(ReplaceTokens, tokens: ['version' : project.version]) filter(ReplaceTokens, tokens: ['version' : project.version])
@ -31,6 +32,7 @@ dependencies {
compile( libraries.javassist ) { transitive = false } compile( libraries.javassist ) { transitive = false }
compile( libraries.byteBuddy ) { transitive = false } compile( libraries.byteBuddy ) { transitive = false }
compile 'org.codehaus.plexus:plexus-utils:3.0.1' compile 'org.codehaus.plexus:plexus-utils:3.0.1'
compile 'org.sonatype.plexus:plexus-build-api:0.0.7'
runtime( libraries.maven_core ) runtime( libraries.maven_core )
runtime( libraries.maven_artifact ) runtime( libraries.maven_artifact )
runtime( libraries.maven_plugin ) runtime( libraries.maven_plugin )
@ -117,4 +119,4 @@ processResources.dependsOn processPluginXml
mavenPom { mavenPom {
name = 'Enhance Plugin of the Hibernate project for use with Maven build system.' name = 'Enhance Plugin of the Hibernate project for use with Maven build system.'
description = 'Enhance Plugin of the Hibernate project for use with Maven build system.' description = 'Enhance Plugin of the Hibernate project for use with Maven build system.'
} }

View File

@ -9,8 +9,8 @@ package org.hibernate.orm.tooling.maven;
import java.io.File; import java.io.File;
import java.io.FileFilter; import java.io.FileFilter;
import java.io.FileNotFoundException; import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException; import java.io.IOException;
import java.io.OutputStream;
import java.net.MalformedURLException; import java.net.MalformedURLException;
import java.net.URL; import java.net.URL;
import java.net.URLClassLoader; import java.net.URLClassLoader;
@ -23,6 +23,7 @@ import org.apache.maven.artifact.Artifact;
import org.apache.maven.plugin.AbstractMojo; import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException; import org.apache.maven.plugin.MojoFailureException;
import org.apache.maven.plugins.annotations.Component;
import org.apache.maven.plugins.annotations.Execute; import org.apache.maven.plugins.annotations.Execute;
import org.apache.maven.plugins.annotations.LifecyclePhase; import org.apache.maven.plugins.annotations.LifecyclePhase;
import org.apache.maven.plugins.annotations.Mojo; import org.apache.maven.plugins.annotations.Mojo;
@ -37,6 +38,8 @@ import org.hibernate.bytecode.enhance.spi.UnloadedClass;
import org.hibernate.bytecode.enhance.spi.UnloadedField; import org.hibernate.bytecode.enhance.spi.UnloadedField;
import org.hibernate.cfg.Environment; import org.hibernate.cfg.Environment;
import org.sonatype.plexus.build.incremental.BuildContext;
/** /**
* This plugin will enhance Entity objects. * This plugin will enhance Entity objects.
* *
@ -52,6 +55,9 @@ public class MavenEnhancePlugin extends AbstractMojo {
*/ */
private List<File> sourceSet = new ArrayList<File>(); private List<File> sourceSet = new ArrayList<File>();
@Component
private BuildContext buildContext;
@Parameter(property = "dir", defaultValue = "${project.build.outputDirectory}") @Parameter(property = "dir", defaultValue = "${project.build.outputDirectory}")
private String dir; private String dir;
@ -201,7 +207,7 @@ public class MavenEnhancePlugin extends AbstractMojo {
if ( failOnError ) { if ( failOnError ) {
throw new MojoExecutionException( msg, e ); throw new MojoExecutionException( msg, e );
} }
getLog().warn( msg ); buildContext.addMessage( javaClassFile, 0, 0, msg, BuildContext.SEVERITY_WARNING, e );
return null; return null;
} }
} }
@ -240,44 +246,38 @@ public class MavenEnhancePlugin extends AbstractMojo {
try { try {
if ( file.delete() ) { if ( file.delete() ) {
if ( !file.createNewFile() ) { if ( !file.createNewFile() ) {
getLog().error( "Unable to recreate class file [" + file.getName() + "]" ); buildContext.addMessage( file, 0, 0, "Unable to recreate class file", BuildContext.SEVERITY_ERROR, null );
} }
} }
else { else {
getLog().error( "Unable to delete class file [" + file.getName() + "]" ); buildContext.addMessage( file, 0, 0, "Unable to delete class file", BuildContext.SEVERITY_ERROR, null );
} }
} }
catch (IOException e) { catch (IOException e) {
getLog().warn( "Problem preparing class file for writing out enhancements [" + file.getName() + "]" ); buildContext.addMessage( file, 0, 0, "Problem preparing class file for writing out enhancements", BuildContext.SEVERITY_WARNING, e );
} }
OutputStream outputStream = null;
try { try {
FileOutputStream outputStream = new FileOutputStream( file, false ); outputStream = buildContext.newFileOutputStream( file );
try { outputStream.write( enhancedBytecode );
outputStream.write( enhancedBytecode ); outputStream.flush();
outputStream.flush();
}
catch (IOException e) {
String msg = String.format( "Error writing to enhanced class [%s] to file [%s]", file.getName(), file.getAbsolutePath() );
if ( failOnError ) {
throw new MojoExecutionException( msg, e );
}
getLog().warn( msg );
}
finally {
try {
outputStream.close();
}
catch (IOException ignore) {
}
}
} }
catch (FileNotFoundException e) { catch (IOException e) {
String msg = "Error opening class file for writing: " + file.getAbsolutePath(); String msg = String.format( "Error writing to enhanced class [%s] to file [%s]", file.getName(), file.getAbsolutePath() );
if ( failOnError ) { if ( failOnError ) {
throw new MojoExecutionException( msg, e ); throw new MojoExecutionException( msg, e );
} }
getLog().warn( msg ); buildContext.addMessage( file, 0, 0, msg, BuildContext.SEVERITY_WARNING, e );
}
finally {
try {
if( outputStream != null ) {
outputStream.close();
}
}
catch (IOException ignore) {
}
} }
} }
} }

View File

@ -0,0 +1,18 @@
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<goals>
<goal>enhance</goal>
</goals>
</pluginExecutionFilter>
<action>
<execute>
<runOnIncremental>true</runOnIncremental>
<runOnConfiguration>false</runOnConfiguration>
</execute>
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>

View File

@ -84,6 +84,12 @@
<enableAssociationManagement>false</enableAssociationManagement> <enableAssociationManagement>false</enableAssociationManagement>
<enableExtendedEnhancement>false</enableExtendedEnhancement> <enableExtendedEnhancement>false</enableExtendedEnhancement>
</configuration> </configuration>
<requirements>
<requirement>
<role>org.sonatype.plexus.build.incremental.BuildContext</role>
<field-name>buildContext</field-name>
</requirement>
</requirements>
</mojo> </mojo>
</mojos> </mojos>
<dependencies> <dependencies>
@ -96,6 +102,12 @@
<type>jar</type> <type>jar</type>
<version>3.0.1</version> <version>3.0.1</version>
</dependency> </dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-build-api</artifactId>
<type>jar</type>
<version>0.0.7</version>
</dependency>
<dependency> <dependency>
<groupId>org.apache.maven.plugin-tools</groupId> <groupId>org.apache.maven.plugin-tools</groupId>
<artifactId>maven-plugin-annotations</artifactId> <artifactId>maven-plugin-annotations</artifactId>