HHH-8777 Completed implementation of Maven Enhance Plugin fixing issue
with missing descriptor files. Mojo will automatically hook into build lifecycle compile phase. Conflicts: hibernate-enhance-maven-plugin/src/main/java/org/hibernate/bytecode/enhance/plugins/MavenEnhancePlugin.java settings.gradle tooling/hibernate-maven-plugin/hibernate-maven-plugin.gradle
This commit is contained in:
parent
5a570ad072
commit
15acd847cf
|
@ -40,3 +40,6 @@ ObjectStore
|
||||||
# Profiler and heap dumps
|
# Profiler and heap dumps
|
||||||
*.jps
|
*.jps
|
||||||
*.hprof
|
*.hprof
|
||||||
|
|
||||||
|
# Maven Enhance Plugin
|
||||||
|
tooling/hibernate-enhance-maven-plugin/src/main/resources/pom.xml
|
||||||
|
|
|
@ -21,8 +21,8 @@ project(':metamodel-generator').name = 'hibernate-jpamodelgen'
|
||||||
include 'hibernate-gradle-plugin'
|
include 'hibernate-gradle-plugin'
|
||||||
project(':hibernate-gradle-plugin').projectDir = new File(rootProject.projectDir, "tooling/hibernate-gradle-plugin")
|
project(':hibernate-gradle-plugin').projectDir = new File(rootProject.projectDir, "tooling/hibernate-gradle-plugin")
|
||||||
|
|
||||||
include 'hibernate-maven-plugin'
|
include 'hibernate-enhance-maven-plugin'
|
||||||
project(':hibernate-maven-plugin').projectDir = new File(rootProject.projectDir, "tooling/hibernate-maven-plugin")
|
project(':hibernate-enhance-maven-plugin').projectDir = new File(rootProject.projectDir, "tooling/hibernate-enhance-maven-plugin")
|
||||||
|
|
||||||
rootProject.children.each { project ->
|
rootProject.children.each { project ->
|
||||||
project.buildFileName = "${project.name}.gradle"
|
project.buildFileName = "${project.name}.gradle"
|
||||||
|
|
|
@ -0,0 +1,89 @@
|
||||||
|
apply plugin: 'java'
|
||||||
|
apply plugin: 'maven'
|
||||||
|
|
||||||
|
group = 'org.hibernate.orm.tooling'
|
||||||
|
|
||||||
|
repositories {
|
||||||
|
mavenCentral()
|
||||||
|
}
|
||||||
|
|
||||||
|
processResources.doLast {
|
||||||
|
project.build.outputDirectory = '${project.build.outputDirectory}'
|
||||||
|
copy {
|
||||||
|
from 'src/main/resources'
|
||||||
|
into processResources.destinationDir
|
||||||
|
expand ([ version: version, project: project, dir: '${dir}' ])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
compile( libraries.maven_plugin ) {
|
||||||
|
transitive = false
|
||||||
|
}
|
||||||
|
compile( libraries.maven_plugin_tools ) {
|
||||||
|
transitive = false
|
||||||
|
}
|
||||||
|
compile( project(':hibernate-core') ) {
|
||||||
|
transitive = false
|
||||||
|
}
|
||||||
|
compile( libraries.jpa ){
|
||||||
|
transitive = false
|
||||||
|
}
|
||||||
|
compile( libraries.javassist ){
|
||||||
|
transitive = false
|
||||||
|
}
|
||||||
|
compile 'org.codehaus.plexus:plexus-utils:3.0.1'
|
||||||
|
|
||||||
|
runtime( libraries.maven_plugin ) {
|
||||||
|
}
|
||||||
|
runtime( libraries.maven_plugin_tools ) {
|
||||||
|
}
|
||||||
|
runtime( project(':hibernate-core') ) {
|
||||||
|
}
|
||||||
|
runtime( libraries.jpa ){
|
||||||
|
}
|
||||||
|
runtime( libraries.javassist ){
|
||||||
|
}
|
||||||
|
runtime 'org.codehaus.plexus:plexus-utils:3.0.1'
|
||||||
|
}
|
||||||
|
|
||||||
|
// avoiding test dependencies in generated pom
|
||||||
|
configurations.remove(configurations.getByName('testCompile'))
|
||||||
|
configurations.remove(configurations.getByName('testRuntime'))
|
||||||
|
|
||||||
|
task writeNewPom(type:Task, description: 'Writes pom.xml using merged Gradle dependency and MavenPom configuration.') {
|
||||||
|
ext.pomDefinition = pom {
|
||||||
|
project {
|
||||||
|
groupId project.group
|
||||||
|
packaging 'maven-plugin'
|
||||||
|
name 'Enhance Plugin of the Hibernate project for use with Maven build system.'
|
||||||
|
build {
|
||||||
|
plugins {
|
||||||
|
plugin {
|
||||||
|
groupId 'org.apache.maven.plugins'
|
||||||
|
artifactId 'maven-plugin-plugin'
|
||||||
|
version '3.2'
|
||||||
|
configuration {
|
||||||
|
skipErrorNoDescriptorsFound 'true'
|
||||||
|
}
|
||||||
|
executions {
|
||||||
|
execution {
|
||||||
|
id 'mojo-descriptor'
|
||||||
|
goals {
|
||||||
|
goal 'descriptor'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
properties {
|
||||||
|
'project.build.sourceEncoding' 'UTF-8'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ext.pomDefinition.writeTo("$projectDir/src/main/resources/pom.xml")
|
||||||
|
}
|
||||||
|
|
||||||
|
processResources.dependsOn writeNewPom
|
||||||
|
|
|
@ -31,6 +31,11 @@ import java.io.FileOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import javassist.ClassPool;
|
||||||
|
import javassist.CtClass;
|
||||||
|
import javassist.CtField;
|
||||||
|
|
||||||
import javax.persistence.ElementCollection;
|
import javax.persistence.ElementCollection;
|
||||||
import javax.persistence.Embeddable;
|
import javax.persistence.Embeddable;
|
||||||
import javax.persistence.Entity;
|
import javax.persistence.Entity;
|
||||||
|
@ -38,16 +43,13 @@ import javax.persistence.ManyToMany;
|
||||||
import javax.persistence.OneToMany;
|
import javax.persistence.OneToMany;
|
||||||
import javax.persistence.Transient;
|
import javax.persistence.Transient;
|
||||||
|
|
||||||
import javassist.ClassPool;
|
|
||||||
import javassist.CtClass;
|
|
||||||
import javassist.CtField;
|
|
||||||
|
|
||||||
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.Execute;
|
||||||
|
import org.apache.maven.plugins.annotations.LifecyclePhase;
|
||||||
import org.apache.maven.plugins.annotations.Mojo;
|
import org.apache.maven.plugins.annotations.Mojo;
|
||||||
import org.apache.maven.plugins.annotations.Parameter;
|
import org.apache.maven.plugins.annotations.Parameter;
|
||||||
|
|
||||||
import org.hibernate.bytecode.enhance.spi.EnhancementContext;
|
import org.hibernate.bytecode.enhance.spi.EnhancementContext;
|
||||||
import org.hibernate.bytecode.enhance.spi.Enhancer;
|
import org.hibernate.bytecode.enhance.spi.Enhancer;
|
||||||
|
|
||||||
|
@ -55,9 +57,11 @@ import org.hibernate.bytecode.enhance.spi.Enhancer;
|
||||||
* This plugin will enhance Entity objects.
|
* This plugin will enhance Entity objects.
|
||||||
*
|
*
|
||||||
* @author Jeremy Whiting
|
* @author Jeremy Whiting
|
||||||
|
* @phase "compile"
|
||||||
*/
|
*/
|
||||||
@Mojo(name = "enhance")
|
@Mojo ( name="enhance", defaultPhase = LifecyclePhase.COMPILE )
|
||||||
public class HibernateEnhancementMojo extends AbstractMojo implements EnhancementContext {
|
@Execute ( goal ="enhance" , phase = LifecyclePhase.COMPILE )
|
||||||
|
public class MavenEnhancePlugin extends AbstractMojo implements EnhancementContext {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The contexts to use during enhancement.
|
* The contexts to use during enhancement.
|
||||||
|
@ -69,7 +73,7 @@ public class HibernateEnhancementMojo extends AbstractMojo implements Enhancemen
|
||||||
private static final String CLASS_EXTENSION = ".class";
|
private static final String CLASS_EXTENSION = ".class";
|
||||||
|
|
||||||
@Parameter(property="dir", defaultValue="${project.build.outputDirectory}")
|
@Parameter(property="dir", defaultValue="${project.build.outputDirectory}")
|
||||||
private String dir;
|
private String dir = null;
|
||||||
|
|
||||||
public void execute() throws MojoExecutionException, MojoFailureException {
|
public void execute() throws MojoExecutionException, MojoFailureException {
|
||||||
getLog().info( "Started enhance plugin....." );
|
getLog().info( "Started enhance plugin....." );
|
||||||
|
@ -142,6 +146,7 @@ public class HibernateEnhancementMojo extends AbstractMojo implements Enhancemen
|
||||||
|
|
||||||
private void processEntityClassFile(File javaClassFile, CtClass ctClass ) {
|
private void processEntityClassFile(File javaClassFile, CtClass ctClass ) {
|
||||||
try {
|
try {
|
||||||
|
getLog().info( String.format("Processing Entity class file [%1$s].", ctClass.getName()) );
|
||||||
byte[] result = enhancer.enhance( ctClass.getName(), ctClass.toBytecode() );
|
byte[] result = enhancer.enhance( ctClass.getName(), ctClass.toBytecode() );
|
||||||
if(result != null)
|
if(result != null)
|
||||||
writeEnhancedClass(javaClassFile, result);
|
writeEnhancedClass(javaClassFile, result);
|
||||||
|
@ -154,6 +159,7 @@ public class HibernateEnhancementMojo extends AbstractMojo implements Enhancemen
|
||||||
|
|
||||||
private void processCompositeClassFile(File javaClassFile, CtClass ctClass) {
|
private void processCompositeClassFile(File javaClassFile, CtClass ctClass) {
|
||||||
try {
|
try {
|
||||||
|
getLog().info( String.format("Processing Composite class file [%1$s].", ctClass.getName()) );
|
||||||
byte[] result = enhancer.enhanceComposite(ctClass.getName(), ctClass.toBytecode());
|
byte[] result = enhancer.enhanceComposite(ctClass.getName(), ctClass.toBytecode());
|
||||||
if(result != null)
|
if(result != null)
|
||||||
writeEnhancedClass(javaClassFile, result);
|
writeEnhancedClass(javaClassFile, result);
|
|
@ -0,0 +1,44 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
|
||||||
|
<!-- Generated by maven-plugin-tools 3.2 on 2013-12-19 -->
|
||||||
|
|
||||||
|
<plugin>
|
||||||
|
<name>Enhance Plugin of the Hibernate project for use with Maven build system.</name>
|
||||||
|
<description></description>
|
||||||
|
<groupId>org.hibernate.orm.tooling</groupId>
|
||||||
|
<artifactId>hibernate-enhance-maven-plugin</artifactId>
|
||||||
|
<version>${version}</version>
|
||||||
|
<goalPrefix>hibernate-enhance</goalPrefix>
|
||||||
|
<mojos>
|
||||||
|
<mojo>
|
||||||
|
<goal>enhance</goal>
|
||||||
|
<description>This plugin will enhance Entity objects.</description>
|
||||||
|
<requiresDirectInvocation>false</requiresDirectInvocation>
|
||||||
|
<requiresProject>true</requiresProject>
|
||||||
|
<requiresReports>false</requiresReports>
|
||||||
|
<aggregator>false</aggregator>
|
||||||
|
<requiresOnline>false</requiresOnline>
|
||||||
|
<inheritedByDefault>true</inheritedByDefault>
|
||||||
|
<phase>compile</phase>
|
||||||
|
<executePhase>compile</executePhase>
|
||||||
|
<executeGoal>enhance</executeGoal>
|
||||||
|
<implementation>org.hibernate.bytecode.enhance.plugins.MavenEnhancePlugin</implementation>
|
||||||
|
<language>java</language>
|
||||||
|
<instantiationStrategy>per-lookup</instantiationStrategy>
|
||||||
|
<executionStrategy>once-per-session</executionStrategy>
|
||||||
|
<threadSafe>false</threadSafe>
|
||||||
|
<parameters>
|
||||||
|
<parameter>
|
||||||
|
<name>dir</name>
|
||||||
|
<type>java.lang.String</type>
|
||||||
|
<required>false</required>
|
||||||
|
<editable>true</editable>
|
||||||
|
<description></description>
|
||||||
|
</parameter>
|
||||||
|
</parameters>
|
||||||
|
<configuration>
|
||||||
|
<dir implementation="java.lang.String" default-value="${project.build.outputDirectory}">${dir}</dir>
|
||||||
|
</configuration>
|
||||||
|
</mojo>
|
||||||
|
</mojos>
|
||||||
|
</plugin>
|
|
@ -0,0 +1,13 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
|
||||||
|
<!-- Generated by maven-plugin-tools 3.1 on 2013-12-19 -->
|
||||||
|
|
||||||
|
<plugin>
|
||||||
|
<name>Enhance Plugin of the Hibernate project for use with Maven build system.</name>
|
||||||
|
<description></description>
|
||||||
|
<groupId>org.hibernate.orm.tooling</groupId>
|
||||||
|
<artifactId>hibernate-enhance-maven-plugin</artifactId>
|
||||||
|
<version>${version}</version>
|
||||||
|
<goalPrefix>hibernate-enhance</goalPrefix>
|
||||||
|
<mojos/>
|
||||||
|
</plugin>
|
|
@ -0,0 +1,162 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
|
||||||
|
<!-- Generated by maven-plugin-tools 3.2 on 2013-12-19 -->
|
||||||
|
|
||||||
|
<plugin>
|
||||||
|
<name>Enhance Plugin of the Hibernate project for use with Maven build system.</name>
|
||||||
|
<description></description>
|
||||||
|
<groupId>org.hibernate.orm.tooling</groupId>
|
||||||
|
<artifactId>hibernate-enhance-maven-plugin</artifactId>
|
||||||
|
<version>${version}</version>
|
||||||
|
<goalPrefix>hibernate-enhance</goalPrefix>
|
||||||
|
<isolatedRealm>false</isolatedRealm>
|
||||||
|
<inheritedByDefault>true</inheritedByDefault>
|
||||||
|
<mojos>
|
||||||
|
<mojo>
|
||||||
|
<goal>enhance</goal>
|
||||||
|
<description>This plugin will enhance Entity objects.</description>
|
||||||
|
<requiresDirectInvocation>false</requiresDirectInvocation>
|
||||||
|
<requiresProject>true</requiresProject>
|
||||||
|
<requiresReports>false</requiresReports>
|
||||||
|
<aggregator>false</aggregator>
|
||||||
|
<requiresOnline>false</requiresOnline>
|
||||||
|
<inheritedByDefault>true</inheritedByDefault>
|
||||||
|
<phase>compile</phase>
|
||||||
|
<executePhase>compile</executePhase>
|
||||||
|
<executeGoal>enhance</executeGoal>
|
||||||
|
<implementation>org.hibernate.bytecode.enhance.plugins.MavenEnhancePlugin</implementation>
|
||||||
|
<language>java</language>
|
||||||
|
<instantiationStrategy>per-lookup</instantiationStrategy>
|
||||||
|
<executionStrategy>once-per-session</executionStrategy>
|
||||||
|
<threadSafe>false</threadSafe>
|
||||||
|
<parameters>
|
||||||
|
<parameter>
|
||||||
|
<name>dir</name>
|
||||||
|
<type>java.lang.String</type>
|
||||||
|
<required>false</required>
|
||||||
|
<editable>true</editable>
|
||||||
|
<description></description>
|
||||||
|
</parameter>
|
||||||
|
</parameters>
|
||||||
|
<configuration>
|
||||||
|
<dir implementation="java.lang.String" default-value="${project.build.outputDirectory}">${dir}</dir>
|
||||||
|
</configuration>
|
||||||
|
</mojo>
|
||||||
|
</mojos>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.jboss.logging</groupId>
|
||||||
|
<artifactId>jboss-logging</artifactId>
|
||||||
|
<type>jar</type>
|
||||||
|
<version>3.1.0.GA</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.codehaus.plexus</groupId>
|
||||||
|
<artifactId>plexus-utils</artifactId>
|
||||||
|
<type>jar</type>
|
||||||
|
<version>3.0.1</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.maven.plugin-tools</groupId>
|
||||||
|
<artifactId>maven-plugin-annotations</artifactId>
|
||||||
|
<type>jar</type>
|
||||||
|
<version>3.2</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.maven</groupId>
|
||||||
|
<artifactId>maven-artifact</artifactId>
|
||||||
|
<type>jar</type>
|
||||||
|
<version>3.0</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.hibernate</groupId>
|
||||||
|
<artifactId>hibernate-core</artifactId>
|
||||||
|
<type>jar</type>
|
||||||
|
<version>4.2.8.Final</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>antlr</groupId>
|
||||||
|
<artifactId>antlr</artifactId>
|
||||||
|
<type>jar</type>
|
||||||
|
<version>2.7.7</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>dom4j</groupId>
|
||||||
|
<artifactId>dom4j</artifactId>
|
||||||
|
<type>jar</type>
|
||||||
|
<version>1.6.1</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.jboss.spec.javax.transaction</groupId>
|
||||||
|
<artifactId>jboss-transaction-api_1.1_spec</artifactId>
|
||||||
|
<type>jar</type>
|
||||||
|
<version>1.0.1.Final</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.hibernate.common</groupId>
|
||||||
|
<artifactId>hibernate-commons-annotations</artifactId>
|
||||||
|
<type>jar</type>
|
||||||
|
<version>4.0.2.Final</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.hibernate.javax.persistence</groupId>
|
||||||
|
<artifactId>hibernate-jpa-2.0-api</artifactId>
|
||||||
|
<type>jar</type>
|
||||||
|
<version>1.0.1.Final</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.maven</groupId>
|
||||||
|
<artifactId>maven-plugin-api</artifactId>
|
||||||
|
<type>jar</type>
|
||||||
|
<version>3.0.5</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.maven</groupId>
|
||||||
|
<artifactId>maven-model</artifactId>
|
||||||
|
<type>jar</type>
|
||||||
|
<version>3.0.5</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.sonatype.sisu</groupId>
|
||||||
|
<artifactId>sisu-inject-plexus</artifactId>
|
||||||
|
<type>jar</type>
|
||||||
|
<version>2.3.0</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.codehaus.plexus</groupId>
|
||||||
|
<artifactId>plexus-component-annotations</artifactId>
|
||||||
|
<type>jar</type>
|
||||||
|
<version>1.5.5</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.codehaus.plexus</groupId>
|
||||||
|
<artifactId>plexus-classworlds</artifactId>
|
||||||
|
<type>jar</type>
|
||||||
|
<version>2.4</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.sonatype.sisu</groupId>
|
||||||
|
<artifactId>sisu-inject-bean</artifactId>
|
||||||
|
<type>jar</type>
|
||||||
|
<version>2.3.0</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.sonatype.sisu</groupId>
|
||||||
|
<artifactId>sisu-guice</artifactId>
|
||||||
|
<type>jar</type>
|
||||||
|
<version>3.1.0</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.sonatype.sisu</groupId>
|
||||||
|
<artifactId>sisu-guava</artifactId>
|
||||||
|
<type>jar</type>
|
||||||
|
<version>0.9.9</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.javassist</groupId>
|
||||||
|
<artifactId>javassist</artifactId>
|
||||||
|
<type>jar</type>
|
||||||
|
<version>3.18.1-GA</version>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</plugin>
|
|
@ -1,14 +0,0 @@
|
||||||
apply plugin: 'java'
|
|
||||||
apply plugin: 'maven'
|
|
||||||
|
|
||||||
repositories {
|
|
||||||
mavenCentral()
|
|
||||||
}
|
|
||||||
|
|
||||||
dependencies {
|
|
||||||
compile( libraries.maven_plugin )
|
|
||||||
compile( libraries.maven_plugin_tools )
|
|
||||||
compile( project(':hibernate-core') )
|
|
||||||
compile( libraries.jpa )
|
|
||||||
compile( libraries.javassist )
|
|
||||||
}
|
|
Loading…
Reference in New Issue