Executing ETL inside Maven Plugin [message #1708936] |
Tue, 22 September 2015 14:59 |
Rolando Amarillo Messages: 4 Registered: September 2015 |
Junior Member |
|
|
Hi,
I'm developing a Sonar-Maven plugin and executing a transformation inside it.
I take some code from examples/standalone/etl/EtlStandaloneExample.java and adapted to my needs:
The problem is that when sonar runs the plugin it shows this exception:
------------------------------------------------------------------------
BUILD FAILURE
------------------------------------------------------------------------
Total time: 02:30 min
Finished at: 2015-09-22T08:46:00-05:00
Final Memory: 40M/329M
------------------------------------------------------------------------
[ERROR] Failed to execute goal org.codehaus.mojo:sonar-maven-plugin:2.6:sonar (d
efault-cli) on project build-default-product: null: MojoExecutionException: Exce
ptionInInitializerError: UnsupportedOperationException -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal o
rg.codehaus.mojo:sonar-maven-plugin:2.6:sonar (default-cli) on project build-def
ault-product: null
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor
.java:216)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor
.java:153)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor
.java:145)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProje
ct(LifecycleModuleBuilder.java:116)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProje
ct(LifecycleModuleBuilder.java:80)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThre
adedBuilder.build(SingleThreadedBuilder.java:51)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(Lifecycl
eStarter.java:128)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:862)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:286)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:197)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Laun
cher.java:289)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.jav
a:229)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(La
uncher.java:415)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:
356)
Caused by: org.apache.maven.plugin.MojoExecutionException
at org.codehaus.mojo.sonar.bootstrap.ExceptionHandling.handle(ExceptionH
andling.java:41)
at org.codehaus.mojo.sonar.bootstrap.RunnerBootstraper.execute(RunnerBoo
tstraper.java:139)
at org.codehaus.mojo.sonar.SonarMojo.execute(SonarMojo.java:132)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(Default
BuildPluginManager.java:134)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor
.java:208)
... 20 more
Caused by: java.lang.ExceptionInInitializerError
at org.eclipse.epsilon.emc.emf.EmfModel.loadModelFromUri(EmfModel.java:2
37)
at org.eclipse.epsilon.emc.emf.EmfModel.loadModel(EmfModel.java:168)
at org.eclipse.epsilon.eol.models.CachedModel.load(CachedModel.java:147)
at org.eclipse.epsilon.emc.emf.EmfModel.load(EmfModel.java:152)
at tools.sonarplugin.simplifieddecisionmetrics.transformer.EpsilonStanda
loneExecuter.createEmfModel(EpsilonStandaloneExecuter.java:92)
at tools.sonarplugin.simplifieddecisionmetrics.transformer.SubKDM2SDMTra
nsformation.getModels(SubKDM2SDMTransformation.java:68)
at tools.sonarplugin.simplifieddecisionmetrics.transformer.EpsilonStanda
loneExecuter.execute(EpsilonStandaloneExecuter.java:56)
at tools.sonarplugin.simplifieddecisionmetrics.IDEMetadataSensor.analyse
(IDEMetadataSensor.java:37)
at org.sonar.batch.phases.SensorsExecutor.executeSensor(SensorsExecutor.
java:59)
at org.sonar.batch.phases.SensorsExecutor.execute(SensorsExecutor.java:5
1)
at org.sonar.batch.phases.DatabaseModePhaseExecutor.execute(DatabaseMode
PhaseExecutor.java:120)
at org.sonar.batch.scan.ModuleScanContainer.doAfterStart(ModuleScanConta
iner.java:264)
at org.sonar.api.platform.ComponentContainer.startComponents(ComponentCo
ntainer.java:92)
at org.sonar.api.platform.ComponentContainer.execute(ComponentContainer.
java:77)
at org.sonar.batch.scan.ProjectScanContainer.scan(ProjectScanContainer.j
ava:235)
at org.sonar.batch.scan.ProjectScanContainer.scanRecursively(ProjectScan
Container.java:230)
at org.sonar.batch.scan.ProjectScanContainer.scanRecursively(ProjectScan
Container.java:228)
at org.sonar.batch.scan.ProjectScanContainer.doAfterStart(ProjectScanCon
tainer.java:220)
at org.sonar.api.platform.ComponentContainer.startComponents(ComponentCo
ntainer.java:92)
at org.sonar.api.platform.ComponentContainer.execute(ComponentContainer.
java:77)
at org.sonar.batch.scan.ScanTask.scan(ScanTask.java:57)
at org.sonar.batch.scan.ScanTask.execute(ScanTask.java:45)
at org.sonar.batch.bootstrap.TaskContainer.doAfterStart(TaskContainer.ja
va:135)
at org.sonar.api.platform.ComponentContainer.startComponents(ComponentCo
ntainer.java:92)
at org.sonar.api.platform.ComponentContainer.execute(ComponentContainer.
java:77)
at org.sonar.batch.bootstrap.GlobalContainer.executeTask(GlobalContainer
.java:158)
at org.sonar.batch.bootstrapper.Batch.executeTask(Batch.java:95)
at org.sonar.batch.bootstrapper.Batch.execute(Batch.java:67)
at org.sonar.runner.batch.IsolatedLauncher.execute(IsolatedLauncher.java
:48)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.sonar.runner.impl.BatchLauncher$1.delegateExecution(BatchLauncher
.java:87)
at org.sonar.runner.impl.BatchLauncher$1.run(BatchLauncher.java:75)
at java.security.AccessController.doPrivileged(Native Method)
at org.sonar.runner.impl.BatchLauncher.doExecute(BatchLauncher.java:69)
at org.sonar.runner.impl.BatchLauncher.execute(BatchLauncher.java:50)
at org.sonar.runner.api.EmbeddedRunner.doExecute(EmbeddedRunner.java:102
)
at org.sonar.runner.api.Runner.execute(Runner.java:100)
at org.codehaus.mojo.sonar.bootstrap.RunnerBootstraper.execute(RunnerBoo
tstraper.java:135)
... 23 more
Caused by: java.lang.UnsupportedOperationException
at org.eclipse.emf.ecore.impl.MinimalEObjectImpl.eBasicAdapters(MinimalE
ObjectImpl.java:295)
at org.eclipse.emf.common.notify.impl.BasicNotifierImpl.eNotificationReq
uired(BasicNotifierImpl.java:261)
at org.eclipse.emf.ecore.impl.EFactoryImpl.basicSetEPackage(EFactoryImpl
.java:138)
at org.eclipse.emf.ecore.impl.EFactoryImpl.eInverseAdd(EFactoryImpl.java
:714)
at org.eclipse.emf.ecore.impl.BasicEObjectImpl.eInverseAdd(BasicEObjectI
mpl.java:1405)
at org.eclipse.emf.ecore.impl.EPackageImpl.setEFactoryInstance(EPackageI
mpl.java:382)
at org.eclipse.emf.ecore.impl.EPackageImpl.<init>(EPackageImpl.java:177)
at org.eclipse.emf.ecore.impl.EcorePackageImpl.<init>(EcorePackageImpl.j
ava:79)
at org.eclipse.emf.ecore.impl.EcorePackageImpl.init(EcorePackageImpl.jav
a:477)
at org.eclipse.emf.ecore.EcorePackage.<clinit>(EcorePackage.java:67)
... 64 more
[ERROR]
[ERROR]
[ERROR] For more information about the errors and possible solutions, please rea
d the following articles:
[ERROR] [Help 1] cwiki.apache.org/confluence/display/MAVEN/MojoExecutionE
xception
[ERROR]
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR] mvn <goals> -rf :build-default-product
Here is my code:
package tools.sonarplugin.simplifieddecisionmetrics.transformer;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.emf.ecore.util.EcoreEList;
import org.eclipse.epsilon.emc.emf.EmfModel;
import org.eclipse.epsilon.eol.IEolExecutableModule;
import org.eclipse.epsilon.eol.models.IModel;
import org.eclipse.epsilon.etl.EtlModule;
public class SubKDM2SDMTransformation extends EpsilonStandaloneExecuter {
public static void main(String[] args) throws Exception {
EmfModel model = createEmfModel("sourcemodel",
"/simplifieddecisionmetrics/kdmResultadoSub.xmi",
"/simplifieddecisionmetrics/SubKDM.ecore", true, false);
Collection<EObject> numberOfPackagesMeasures = model
.getAllOfKind("NumberOfPackagesMeasure");
Iterator<EObject> iter = numberOfPackagesMeasures.iterator();
while (iter.hasNext()) {
EObject object = iter.next();
EStructuralFeature feature = object.eClass().getEStructuralFeature(
"measurements");
if (feature != null) {
EcoreEList<EObject> measurements = (EcoreEList<EObject>) object
.eGet(feature);
for (EObject measurement : measurements) {
feature = measurement.eClass().getEStructuralFeature(
"value");
String variableName = measurement.eClass().getName();
Object variableNameObject = measurement.eGet(feature);
String variableValue;
if (variableNameObject != null) {
variableValue = variableNameObject.toString();
} else {
variableValue = "";
}
variableName = variableName + ':' + variableValue;
System.out.println(variableName);
}
}
}
}
@Override
public IEolExecutableModule createModule() {
return new EtlModule();
}
@Override
public String getSource() throws Exception {
return "/simplifieddecisionmetrics/micro2sdm.etl";
}
@Override
public List<IModel> getModels() throws Exception {
List<IModel> models = new ArrayList<IModel>();
models.add(createEmfModel("sourcemodel",
"/simplifieddecisionmetrics/KdmSub.xmi",
"/simplifieddecisionmetrics/SubKDM.ecore", true, true));
return models;
}
}
I can run the transformation as a Java Application correctly.
I'm packaging the plugin with this libraries:
org.eclipse.emf.ecore
org.eclipse.epsilon.common
org.eclipse.epsilon.emc.emf
org.eclipse.epsilon.eol.engine
org.eclipse.epsilon.erl.engine
org.eclipse.epsilon.etl.engine
I don't know if I'm doing something wrong. Please help!
Rolando
|
|
|
|
Re: Executing ETL inside Maven Plugin [message #1709087 is a reply to message #1709012] |
Wed, 23 September 2015 20:36 |
Rolando Amarillo Messages: 4 Registered: September 2015 |
Junior Member |
|
|
Hi Dimitris,
Thank you for your fast response.
I don't understand what do you mean with pure EMF. Without any xmi file?
I made another test and changed the code to load the XMI file like this:
Resource.Factory.Registry reg = Resource.Factory.Registry.INSTANCE;
Map<String, Object> m = reg.getExtensionToFactoryMap();
m.put("xmi", new XMIResourceFactoryImpl());
// Obtain a new resource set
ResourceSet resSet = new ResourceSetImpl();
// Get the resource
Resource resource = resSet
.getResource(
URI.createURI("/simplifieddecisionmetrics/kdmResultSub.xmi"),
true);
Iterator<EObject> iter = resource.getAllContents();
The problem still persists:
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal o
rg.codehaus.mojo:sonar-maven-plugin:2.6:sonar (default-cli) on project build-def
ault-product: null
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor
.java:216)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor
.java:153)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor
.java:145)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProje
ct(LifecycleModuleBuilder.java:116)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProje
ct(LifecycleModuleBuilder.java:80)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThre
adedBuilder.build(SingleThreadedBuilder.java:51)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(Lifecycl
eStarter.java:128)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:862)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:286)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:197)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Laun
cher.java:289)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.jav
a:229)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(La
uncher.java:415)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:
356)
Caused by: org.apache.maven.plugin.MojoExecutionException
at org.codehaus.mojo.sonar.bootstrap.ExceptionHandling.handle(ExceptionH
andling.java:41)
at org.codehaus.mojo.sonar.bootstrap.RunnerBootstraper.execute(RunnerBoo
tstraper.java:139)
at org.codehaus.mojo.sonar.SonarMojo.execute(SonarMojo.java:132)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(Default
BuildPluginManager.java:134)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor
.java:208)
... 20 more
Caused by: java.lang.ExceptionInInitializerError
at tools.sonarplugin.simplifieddecisionmetrics.IDEMetadataSensor.analyse
(IDEMetadataSensor.java:54)
at org.sonar.batch.phases.SensorsExecutor.executeSensor(SensorsExecutor.
java:59)
at org.sonar.batch.phases.SensorsExecutor.execute(SensorsExecutor.java:5
1)
at org.sonar.batch.phases.DatabaseModePhaseExecutor.execute(DatabaseMode
PhaseExecutor.java:120)
at org.sonar.batch.scan.ModuleScanContainer.doAfterStart(ModuleScanConta
iner.java:264)
at org.sonar.api.platform.ComponentContainer.startComponents(ComponentCo
ntainer.java:92)
at org.sonar.api.platform.ComponentContainer.execute(ComponentContainer.
java:77)
at org.sonar.batch.scan.ProjectScanContainer.scan(ProjectScanContainer.j
ava:235)
at org.sonar.batch.scan.ProjectScanContainer.scanRecursively(ProjectScan
Container.java:230)
at org.sonar.batch.scan.ProjectScanContainer.scanRecursively(ProjectScan
Container.java:228)
at org.sonar.batch.scan.ProjectScanContainer.doAfterStart(ProjectScanCon
tainer.java:220)
at org.sonar.api.platform.ComponentContainer.startComponents(ComponentCo
ntainer.java:92)
at org.sonar.api.platform.ComponentContainer.execute(ComponentContainer.
java:77)
at org.sonar.batch.scan.ScanTask.scan(ScanTask.java:57)
at org.sonar.batch.scan.ScanTask.execute(ScanTask.java:45)
at org.sonar.batch.bootstrap.TaskContainer.doAfterStart(TaskContainer.ja
va:135)
at org.sonar.api.platform.ComponentContainer.startComponents(ComponentCo
ntainer.java:92)
at org.sonar.api.platform.ComponentContainer.execute(ComponentContainer.
java:77)
at org.sonar.batch.bootstrap.GlobalContainer.executeTask(GlobalContainer
.java:158)
at org.sonar.batch.bootstrapper.Batch.executeTask(Batch.java:95)
at org.sonar.batch.bootstrapper.Batch.execute(Batch.java:67)
at org.sonar.runner.batch.IsolatedLauncher.execute(IsolatedLauncher.java
:48)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.sonar.runner.impl.BatchLauncher$1.delegateExecution(BatchLauncher
.java:87)
at org.sonar.runner.impl.BatchLauncher$1.run(BatchLauncher.java:75)
at java.security.AccessController.doPrivileged(Native Method)
at org.sonar.runner.impl.BatchLauncher.doExecute(BatchLauncher.java:69)
at org.sonar.runner.impl.BatchLauncher.execute(BatchLauncher.java:50)
at org.sonar.runner.api.EmbeddedRunner.doExecute(EmbeddedRunner.java:102
)
at org.sonar.runner.api.Runner.execute(Runner.java:100)
at org.codehaus.mojo.sonar.bootstrap.RunnerBootstraper.execute(RunnerBoo
tstraper.java:135)
... 23 more
Caused by: java.lang.UnsupportedOperationException
at org.eclipse.emf.ecore.impl.MinimalEObjectImpl.eBasicAdapters(MinimalE
ObjectImpl.java:295)
at org.eclipse.emf.common.notify.impl.BasicNotifierImpl.eNotificationReq
uired(BasicNotifierImpl.java:261)
at org.eclipse.emf.ecore.impl.EFactoryImpl.basicSetEPackage(EFactoryImpl
.java:138)
at org.eclipse.emf.ecore.impl.EFactoryImpl.eInverseAdd(EFactoryImpl.java
:714)
at org.eclipse.emf.ecore.impl.BasicEObjectImpl.eInverseAdd(BasicEObjectI
mpl.java:1405)
at org.eclipse.emf.ecore.impl.EPackageImpl.setEFactoryInstance(EPackageI
mpl.java:382)
at org.eclipse.emf.ecore.impl.EPackageImpl.<init>(EPackageImpl.java:177)
at subkdm.kdmObjects.impl.KdmObjectsPackageImpl.<init>(KdmObjectsPackage
Impl.java:310)
at subkdm.kdmObjects.impl.KdmObjectsPackageImpl.init(KdmObjectsPackageIm
pl.java:336)
at subkdm.kdmObjects.KdmObjectsPackage.<clinit>(KdmObjectsPackage.java:5
8)
... 57 more
This time the error shows the line in the generated file super(eNS_URI, KdmObjectsFactory.eINSTANCE);:
/**
* Creates an instance of the model <b>Package</b>, registered with
* {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the
* package package URI value.
* <p>
* Note: the correct way to create the package is via the static factory
* method {@link #init init()}, which also performs initialization of the
* package, or returns the registered package, if one already exists. <!--
* begin-user-doc --> <!-- end-user-doc -->
*
* @see org.eclipse.emf.ecore.EPackage.Registry
* @see subkdm.kdmObjects.KdmObjectsPackage#eNS_URI
* @see #init()
* @generated
*/
private KdmObjectsPackageImpl() {
super(eNS_URI, KdmObjectsFactory.eINSTANCE);
}
I'm starting to think there is some kind of conflict between sonar-maven plugin and the epsilon libraries.
Also, do you know if epsilon libraries are available on any maven repositories?
Best Regards,
Rolando
|
|
|
|
Powered by
FUDForum. Page generated in 0.03868 seconds