Re: Using a Pleus component in a plugin
Hi! I would like to use the following code to extract an EAR and all of its jars inside a Mojo. /** * The archive manager. * @component * @required */ private ArchiverManager archiverManager; UnArchiver unArchiver = archiverManager.getUnArchiver( "zip" ); unArchiver.setSourceFile( source ); unArchiver.setDestDirectory( destDir ); unArchiver.extract(); But I get NPE. It seems that in DefaultArchiverManager the contextualize method wasn't called. I also tried the exclusions around dependency declaration, but does not work. I have no idea how to use the plexus component. At least some ideas, which classes should I use to unpack an EAR and its jars. I have to transfer some stubs generated by WebSphere EjbDeploy blackbox which does not create correct client jar. Thanks Tibor Feladó: Andreas Gies [EMAIL PROTECTED] Küldve: 2008. július 28. 19:17 Címzett: Maven Users List Tárgy: [SPAM] - Re: Using a Pleus component in a plugin - Bayesian Filter detected spam Thanks again, the exclusions did the trick and the following code now works: /** * To look up Archiver/UnArchiver implementations * * @component * @required */ protected ArchiverManager archiverManager; public void execute() throws MojoExecutionException, MojoFailureException { getLog().info("Packaging ESB application: "); getLog().info("Project : " + artifactId); getLog().info("Group : " + groupId); getLog().info("Version : " + version); getLog().info("Source : " + sourceDirectory); getLog().info("Build : " + buildDirectory); getLog().info("XAR : " + xarDirectory); File archiveFile = new File(buildDirectory, finalName + ".xar"); try { getLog().info("Creating archive : " + archiveFile.getAbsolutePath()); Archiver archiver = archiverManager.getArchiver("zip"); archiver.setDestFile(archiveFile); //archiver.addDirectory(new File(buildDirectory, xarDirectory)); archiver.addDirectory(new File("generated-src/" + xarDirectory)); archiver.createArchive(); } catch(Exception e) { throw new MojoExecutionException("Failed to create ESB archive " + archiveFile.getAbsolutePath(), e); } } My final question is...Where is the source of knowledge to know about the inclusions / exclusions i would code in my pom? Is there a way of telling or is it just experience ? Thanks again Andreas Olivier Lamy schrieb: > If you use plexus-archiver you have to add some exclusions in your pom. > > > org.codehaus.plexus > plexus-archiver > 1.0-alpha-9 > > > org.codehaus.plexus > plexus-container-default > > > org.codehaus.plexus > plexus-component-api > > > > > -- > Olivier > > > > 2008/7/28 Andreas Gies <[EMAIL PROTECTED]>: > >> Thank you for the hint, >> >> I have changed my code so that it directly references the Archiver now. Now >> I get the output below output from the plugin. >> I think there might be an incompatibbility of the plugins. Perhaps someone >> could give me a hint how I could debug this? >> In general, if I want to use a component that has the Contextualize >> interface implemented...do I need to pass the >> Plexus context explicitly to that component or does the framework do this >> magically. Moreover, the documentation >> says that I *should* implement the Contextualize interface if I plan to use >> plexus components. Even if I do this, the >> contextualize method is never called ... >> >> A pointer at a good example would really be great. For the acute problem I >> have atteched My plugin code and the pom.xml. >> >> >> Thanks >> Andreas >> - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: Using a Pleus component in a plugin
It's a know issue for maven dev. See http://maven.markmail.org/message/lvednyntn7a563s4?q=plexus-archiver+list:org.apache.maven.dev&page=1 -- Olivier 2008/7/28 Andreas Gies <[EMAIL PROTECTED]>: > Thanks again, > > the exclusions did the trick and the following code now works: > > /** > * To look up Archiver/UnArchiver implementations > * > * @component > * @required > */ > protected ArchiverManager archiverManager; > > public void execute() throws MojoExecutionException, MojoFailureException { > > getLog().info("Packaging ESB application: "); > getLog().info("Project : " + artifactId); getLog().info("Group : " + > groupId); getLog().info("Version : " + version); > getLog().info("Source : " + sourceDirectory); > getLog().info("Build : " + buildDirectory); > getLog().info("XAR : " + xarDirectory); > > File archiveFile = new File(buildDirectory, finalName + ".xar"); > > try { > getLog().info("Creating archive : " + archiveFile.getAbsolutePath()); > Archiver archiver = archiverManager.getArchiver("zip"); > archiver.setDestFile(archiveFile); > //archiver.addDirectory(new File(buildDirectory, xarDirectory)); > archiver.addDirectory(new File("generated-src/" + xarDirectory)); > archiver.createArchive(); > } catch(Exception e) { > throw new MojoExecutionException("Failed to create ESB archive " + > archiveFile.getAbsolutePath(), e); > } > } > > My final question is...Where is the source of knowledge to know about the > inclusions / exclusions i would code in my pom? Is there a way of telling or > is it just experience ? > > > > Thanks again > Andreas > > > Olivier Lamy schrieb: >> >> If you use plexus-archiver you have to add some exclusions in your pom. >> >> >> org.codehaus.plexus >> plexus-archiver >> 1.0-alpha-9 >> >> >> org.codehaus.plexus >> plexus-container-default >> >> >> org.codehaus.plexus >> plexus-component-api >> >> >> >> >> -- >> Olivier >> >> >> >> 2008/7/28 Andreas Gies <[EMAIL PROTECTED]>: >> >>> >>> Thank you for the hint, >>> >>> I have changed my code so that it directly references the Archiver now. >>> Now >>> I get the output below output from the plugin. >>> I think there might be an incompatibbility of the plugins. Perhaps >>> someone >>> could give me a hint how I could debug this? >>> In general, if I want to use a component that has the Contextualize >>> interface implemented...do I need to pass the >>> Plexus context explicitly to that component or does the framework do this >>> magically. Moreover, the documentation >>> says that I *should* implement the Contextualize interface if I plan to >>> use >>> plexus components. Even if I do this, the >>> contextualize method is never called ... >>> >>> A pointer at a good example would really be great. For the acute problem >>> I >>> have atteched My plugin code and the pom.xml. >>> >>> >>> Thanks >>> Andreas >>> >>> >>> [INFO] [ESBPlugin:package] >>> [INFO] Packaging ESB application: >>> [INFO] Project : iocc-esb-flow-pubopflightp >>> [INFO] Group : com.lhsystems.iocc >>> [INFO] Version : 1.0-SNAPSHOT >>> [INFO] Source : >>> >>> E:\LHSys\maven\snapshots\com.lhsystems.iocc\iocc-esb-flow-pubopflightp\1.0-SNAPSHOT\src\main\ESB >>> [INFO] Build : >>> >>> E:\LHSys\maven\snapshots\com.lhsystems.iocc\iocc-esb-flow-pubopflightp\1.0-SNAPSHOT\target >>> [INFO] XAR : xar >>> [INFO] Creating archive : >>> >>> E:\LHSys\maven\snapshots\com.lhsystems.iocc\iocc-esb-flow-pubopflightp\1.0-SNAPSHOT\target\iocc-esb-flow-pubopflightp-1.0-SNAPSHOT.xar >>> [FATAL ERROR] com.sonicsw.maven.plugins.MavenEsbPackage#execute() caused >>> a >>> linkage error (java.lang.IncompatibleClassChangeError) and may be >>> out-of-date. Check the realms: >>> [FATAL ERROR] Plugin realm = >>> app0.child-container[com.sonicsw.maven.plugins:ESBPlugin] >>> urls[0] = file:/C:/Documents and >>> >>> Settings/agies/.m2/repository/com/sonicsw/maven/plugins/ESBPlugin/1.0-SNAPSHOT/ESBPlugin-1.0-SNAPSHOT.jar >>> urls[1] = file:/C:/Documents and >>> >>> Settings/agies/.m2/repository/org/codehaus/plexus/plexus-utils/1.5.5/plexus-utils-1.5.5.jar >>> urls[2] = file:/C:/Documents and >>> >>> Settings/agies/.m2/repository/org/codehaus/plexus/plexus-archiver/1.0-alpha-10/plexus-archiver-1.0-alpha-10.jar >>> urls[3] = file:/C:/Documents and >>> >>> Settings/agies/.m2/repository/org/codehaus/plexus/plexus-component-api/1.0-alpha-15/plexus-component-api-1.0-alpha-15.jar >>> urls[4] = file:/C:/Documents and >>> >>> Settings/agies/.m2/repository/org/codehaus/plexus/plexus-classworlds/1.2-alpha-6/plexus-classworlds-1.2-alpha-6.jar >>> urls[5] = file:/C:/Documents and >>> >>> Settings/agies/.m2/repository/org/codehaus/plexus/plexus-io/1.0-alpha-2/plexus-io-1.0-alpha-2.jar >>> urls[6] = file:/C:/Documents and >>> >>> Settings/agies/.m2/repository/com/sonicsw/pso/utilities/MFUtils/1.0-SNAPSHOT/MFUtils-1.0-SNAPSHOT.jar
Re: Using a Pleus component in a plugin
Thanks again, the exclusions did the trick and the following code now works: /** * To look up Archiver/UnArchiver implementations * * @component * @required */ protected ArchiverManager archiverManager; public void execute() throws MojoExecutionException, MojoFailureException { getLog().info("Packaging ESB application: "); getLog().info("Project : " + artifactId); getLog().info("Group : " + groupId); getLog().info("Version : " + version); getLog().info("Source : " + sourceDirectory); getLog().info("Build : " + buildDirectory); getLog().info("XAR : " + xarDirectory); File archiveFile = new File(buildDirectory, finalName + ".xar"); try { getLog().info("Creating archive : " + archiveFile.getAbsolutePath()); Archiver archiver = archiverManager.getArchiver("zip"); archiver.setDestFile(archiveFile); //archiver.addDirectory(new File(buildDirectory, xarDirectory)); archiver.addDirectory(new File("generated-src/" + xarDirectory)); archiver.createArchive(); } catch(Exception e) { throw new MojoExecutionException("Failed to create ESB archive " + archiveFile.getAbsolutePath(), e); } } My final question is...Where is the source of knowledge to know about the inclusions / exclusions i would code in my pom? Is there a way of telling or is it just experience ? Thanks again Andreas Olivier Lamy schrieb: If you use plexus-archiver you have to add some exclusions in your pom. org.codehaus.plexus plexus-archiver 1.0-alpha-9 org.codehaus.plexus plexus-container-default org.codehaus.plexus plexus-component-api -- Olivier 2008/7/28 Andreas Gies <[EMAIL PROTECTED]>: Thank you for the hint, I have changed my code so that it directly references the Archiver now. Now I get the output below output from the plugin. I think there might be an incompatibbility of the plugins. Perhaps someone could give me a hint how I could debug this? In general, if I want to use a component that has the Contextualize interface implemented...do I need to pass the Plexus context explicitly to that component or does the framework do this magically. Moreover, the documentation says that I *should* implement the Contextualize interface if I plan to use plexus components. Even if I do this, the contextualize method is never called ... A pointer at a good example would really be great. For the acute problem I have atteched My plugin code and the pom.xml. Thanks Andreas [INFO] [ESBPlugin:package] [INFO] Packaging ESB application: [INFO] Project : iocc-esb-flow-pubopflightp [INFO] Group : com.lhsystems.iocc [INFO] Version : 1.0-SNAPSHOT [INFO] Source : E:\LHSys\maven\snapshots\com.lhsystems.iocc\iocc-esb-flow-pubopflightp\1.0-SNAPSHOT\src\main\ESB [INFO] Build : E:\LHSys\maven\snapshots\com.lhsystems.iocc\iocc-esb-flow-pubopflightp\1.0-SNAPSHOT\target [INFO] XAR : xar [INFO] Creating archive : E:\LHSys\maven\snapshots\com.lhsystems.iocc\iocc-esb-flow-pubopflightp\1.0-SNAPSHOT\target\iocc-esb-flow-pubopflightp-1.0-SNAPSHOT.xar [FATAL ERROR] com.sonicsw.maven.plugins.MavenEsbPackage#execute() caused a linkage error (java.lang.IncompatibleClassChangeError) and may be out-of-date. Check the realms: [FATAL ERROR] Plugin realm = app0.child-container[com.sonicsw.maven.plugins:ESBPlugin] urls[0] = file:/C:/Documents and Settings/agies/.m2/repository/com/sonicsw/maven/plugins/ESBPlugin/1.0-SNAPSHOT/ESBPlugin-1.0-SNAPSHOT.jar urls[1] = file:/C:/Documents and Settings/agies/.m2/repository/org/codehaus/plexus/plexus-utils/1.5.5/plexus-utils-1.5.5.jar urls[2] = file:/C:/Documents and Settings/agies/.m2/repository/org/codehaus/plexus/plexus-archiver/1.0-alpha-10/plexus-archiver-1.0-alpha-10.jar urls[3] = file:/C:/Documents and Settings/agies/.m2/repository/org/codehaus/plexus/plexus-component-api/1.0-alpha-15/plexus-component-api-1.0-alpha-15.jar urls[4] = file:/C:/Documents and Settings/agies/.m2/repository/org/codehaus/plexus/plexus-classworlds/1.2-alpha-6/plexus-classworlds-1.2-alpha-6.jar urls[5] = file:/C:/Documents and Settings/agies/.m2/repository/org/codehaus/plexus/plexus-io/1.0-alpha-2/plexus-io-1.0-alpha-2.jar urls[6] = file:/C:/Documents and Settings/agies/.m2/repository/com/sonicsw/pso/utilities/MFUtils/1.0-SNAPSHOT/MFUtils-1.0-SNAPSHOT.jar urls[7] = file:/C:/Documents and Settings/agies/.m2/repository/sonic-mq/mgmt_client/7.6.0/mgmt_client-7.6.0.jar urls[8] = file:/C:/Documents and Settings/agies/.m2/repository/sonic-mq/sonic_mgmt_client/7.6.0/sonic_mgmt_client-7.6.0.jar urls[9] = file:/C:/Documents and Settings/agies/.m2/repository/sonic-mq/mgmt_config/7.6.0/mgmt_config-7.6.0.jar urls[10] = file:/C:/Documents and Settings/agies/.m2/repository/sonic-mq/sonic_Client/7.6.0/sonic_Client-7.6.0.jar urls[11] = file:/C:/Documents and Settings/agies/.m2/repository/sonic-mq/sonic_Crypto/7.6.0/sonic_Cry
Re: Using a Pleus component in a plugin
If you use plexus-archiver you have to add some exclusions in your pom. org.codehaus.plexus plexus-archiver 1.0-alpha-9 org.codehaus.plexus plexus-container-default org.codehaus.plexus plexus-component-api -- Olivier 2008/7/28 Andreas Gies <[EMAIL PROTECTED]>: > Thank you for the hint, > > I have changed my code so that it directly references the Archiver now. Now > I get the output below output from the plugin. > I think there might be an incompatibbility of the plugins. Perhaps someone > could give me a hint how I could debug this? > In general, if I want to use a component that has the Contextualize > interface implemented...do I need to pass the > Plexus context explicitly to that component or does the framework do this > magically. Moreover, the documentation > says that I *should* implement the Contextualize interface if I plan to use > plexus components. Even if I do this, the > contextualize method is never called ... > > A pointer at a good example would really be great. For the acute problem I > have atteched My plugin code and the pom.xml. > > > Thanks > Andreas > > > [INFO] [ESBPlugin:package] > [INFO] Packaging ESB application: > [INFO] Project : iocc-esb-flow-pubopflightp > [INFO] Group : com.lhsystems.iocc > [INFO] Version : 1.0-SNAPSHOT > [INFO] Source : > E:\LHSys\maven\snapshots\com.lhsystems.iocc\iocc-esb-flow-pubopflightp\1.0-SNAPSHOT\src\main\ESB > [INFO] Build : > E:\LHSys\maven\snapshots\com.lhsystems.iocc\iocc-esb-flow-pubopflightp\1.0-SNAPSHOT\target > [INFO] XAR : xar > [INFO] Creating archive : > E:\LHSys\maven\snapshots\com.lhsystems.iocc\iocc-esb-flow-pubopflightp\1.0-SNAPSHOT\target\iocc-esb-flow-pubopflightp-1.0-SNAPSHOT.xar > [FATAL ERROR] com.sonicsw.maven.plugins.MavenEsbPackage#execute() caused a > linkage error (java.lang.IncompatibleClassChangeError) and may be > out-of-date. Check the realms: > [FATAL ERROR] Plugin realm = > app0.child-container[com.sonicsw.maven.plugins:ESBPlugin] > urls[0] = file:/C:/Documents and > Settings/agies/.m2/repository/com/sonicsw/maven/plugins/ESBPlugin/1.0-SNAPSHOT/ESBPlugin-1.0-SNAPSHOT.jar > urls[1] = file:/C:/Documents and > Settings/agies/.m2/repository/org/codehaus/plexus/plexus-utils/1.5.5/plexus-utils-1.5.5.jar > urls[2] = file:/C:/Documents and > Settings/agies/.m2/repository/org/codehaus/plexus/plexus-archiver/1.0-alpha-10/plexus-archiver-1.0-alpha-10.jar > urls[3] = file:/C:/Documents and > Settings/agies/.m2/repository/org/codehaus/plexus/plexus-component-api/1.0-alpha-15/plexus-component-api-1.0-alpha-15.jar > urls[4] = file:/C:/Documents and > Settings/agies/.m2/repository/org/codehaus/plexus/plexus-classworlds/1.2-alpha-6/plexus-classworlds-1.2-alpha-6.jar > urls[5] = file:/C:/Documents and > Settings/agies/.m2/repository/org/codehaus/plexus/plexus-io/1.0-alpha-2/plexus-io-1.0-alpha-2.jar > urls[6] = file:/C:/Documents and > Settings/agies/.m2/repository/com/sonicsw/pso/utilities/MFUtils/1.0-SNAPSHOT/MFUtils-1.0-SNAPSHOT.jar > urls[7] = file:/C:/Documents and > Settings/agies/.m2/repository/sonic-mq/mgmt_client/7.6.0/mgmt_client-7.6.0.jar > urls[8] = file:/C:/Documents and > Settings/agies/.m2/repository/sonic-mq/sonic_mgmt_client/7.6.0/sonic_mgmt_client-7.6.0.jar > urls[9] = file:/C:/Documents and > Settings/agies/.m2/repository/sonic-mq/mgmt_config/7.6.0/mgmt_config-7.6.0.jar > urls[10] = file:/C:/Documents and > Settings/agies/.m2/repository/sonic-mq/sonic_Client/7.6.0/sonic_Client-7.6.0.jar > urls[11] = file:/C:/Documents and > Settings/agies/.m2/repository/sonic-mq/sonic_Crypto/7.6.0/sonic_Crypto-7.6.0.jar > urls[12] = file:/C:/Documents and > Settings/agies/.m2/repository/sonic-esb/xq_config/7.6.0/xq_config-7.6.0.jar > urls[13] = file:/C:/Documents and > Settings/agies/.m2/repository/sonic-esb/commons-logging/7.6.0/commons-logging-7.6.0.jar > urls[14] = file:/C:/Documents and > Settings/agies/.m2/repository/sonic-esb/xq_core/7.6.0/xq_core-7.6.0.jar > urls[15] = file:/C:/Documents and > Settings/agies/.m2/repository/sonic-esb/xbean/7.6.0/xbean-7.6.0.jar > urls[16] = file:/C:/Documents and > Settings/agies/.m2/repository/sonic-esb/jsr173_api/7.6.0/jsr173_api-7.6.0.jar > urls[17] = file:/C:/Documents and > Settings/agies/.m2/repository/sonic-mq/xercesImpl/7.6.0/xercesImpl-7.6.0.jar > urls[18] = file:/C:/Documents and > Settings/agies/.m2/repository/sonic-mq/MFdirectory/7.6.0/MFdirectory-7.6.0.jar > urls[19] = file:/C:/Documents and > Settings/agies/.m2/repository/log4j/log4j/1.2.14/log4j-1.2.14.jar > urls[20] = file:/C:/Documents and > Settings/agies/.m2/repository/sonic-mq/mfcontext/7.6.0/mfcontext-7.6.0.jar > [FATAL ERROR] Container realm = plexus.core > urls[0] = file:/c:/tools/maven2/lib/maven-2.0.9-uber.jar > [INFO] > > [ERROR] FATAL ERROR > [INFO] > --
Re: Using a Pleus component in a plugin
Thank you for the hint, I have changed my code so that it directly references the Archiver now. Now I get the output below output from the plugin. I think there might be an incompatibbility of the plugins. Perhaps someone could give me a hint how I could debug this? In general, if I want to use a component that has the Contextualize interface implemented...do I need to pass the Plexus context explicitly to that component or does the framework do this magically. Moreover, the documentation says that I *should* implement the Contextualize interface if I plan to use plexus components. Even if I do this, the contextualize method is never called ... A pointer at a good example would really be great. For the acute problem I have atteched My plugin code and the pom.xml. Thanks Andreas [INFO] [ESBPlugin:package] [INFO] Packaging ESB application: [INFO] Project : iocc-esb-flow-pubopflightp [INFO] Group : com.lhsystems.iocc [INFO] Version : 1.0-SNAPSHOT [INFO] Source : E:\LHSys\maven\snapshots\com.lhsystems.iocc\iocc-esb-flow-pubopflightp\1.0-SNAPSHOT\src\main\ESB [INFO] Build : E:\LHSys\maven\snapshots\com.lhsystems.iocc\iocc-esb-flow-pubopflightp\1.0-SNAPSHOT\target [INFO] XAR : xar [INFO] Creating archive : E:\LHSys\maven\snapshots\com.lhsystems.iocc\iocc-esb-flow-pubopflightp\1.0-SNAPSHOT\target\iocc-esb-flow-pubopflightp-1.0-SNAPSHOT.xar [FATAL ERROR] com.sonicsw.maven.plugins.MavenEsbPackage#execute() caused a linkage error (java.lang.IncompatibleClassChangeError) and may be out-of-date. Check the realms: [FATAL ERROR] Plugin realm = app0.child-container[com.sonicsw.maven.plugins:ESBPlugin] urls[0] = file:/C:/Documents and Settings/agies/.m2/repository/com/sonicsw/maven/plugins/ESBPlugin/1.0-SNAPSHOT/ESBPlugin-1.0-SNAPSHOT.jar urls[1] = file:/C:/Documents and Settings/agies/.m2/repository/org/codehaus/plexus/plexus-utils/1.5.5/plexus-utils-1.5.5.jar urls[2] = file:/C:/Documents and Settings/agies/.m2/repository/org/codehaus/plexus/plexus-archiver/1.0-alpha-10/plexus-archiver-1.0-alpha-10.jar urls[3] = file:/C:/Documents and Settings/agies/.m2/repository/org/codehaus/plexus/plexus-component-api/1.0-alpha-15/plexus-component-api-1.0-alpha-15.jar urls[4] = file:/C:/Documents and Settings/agies/.m2/repository/org/codehaus/plexus/plexus-classworlds/1.2-alpha-6/plexus-classworlds-1.2-alpha-6.jar urls[5] = file:/C:/Documents and Settings/agies/.m2/repository/org/codehaus/plexus/plexus-io/1.0-alpha-2/plexus-io-1.0-alpha-2.jar urls[6] = file:/C:/Documents and Settings/agies/.m2/repository/com/sonicsw/pso/utilities/MFUtils/1.0-SNAPSHOT/MFUtils-1.0-SNAPSHOT.jar urls[7] = file:/C:/Documents and Settings/agies/.m2/repository/sonic-mq/mgmt_client/7.6.0/mgmt_client-7.6.0.jar urls[8] = file:/C:/Documents and Settings/agies/.m2/repository/sonic-mq/sonic_mgmt_client/7.6.0/sonic_mgmt_client-7.6.0.jar urls[9] = file:/C:/Documents and Settings/agies/.m2/repository/sonic-mq/mgmt_config/7.6.0/mgmt_config-7.6.0.jar urls[10] = file:/C:/Documents and Settings/agies/.m2/repository/sonic-mq/sonic_Client/7.6.0/sonic_Client-7.6.0.jar urls[11] = file:/C:/Documents and Settings/agies/.m2/repository/sonic-mq/sonic_Crypto/7.6.0/sonic_Crypto-7.6.0.jar urls[12] = file:/C:/Documents and Settings/agies/.m2/repository/sonic-esb/xq_config/7.6.0/xq_config-7.6.0.jar urls[13] = file:/C:/Documents and Settings/agies/.m2/repository/sonic-esb/commons-logging/7.6.0/commons-logging-7.6.0.jar urls[14] = file:/C:/Documents and Settings/agies/.m2/repository/sonic-esb/xq_core/7.6.0/xq_core-7.6.0.jar urls[15] = file:/C:/Documents and Settings/agies/.m2/repository/sonic-esb/xbean/7.6.0/xbean-7.6.0.jar urls[16] = file:/C:/Documents and Settings/agies/.m2/repository/sonic-esb/jsr173_api/7.6.0/jsr173_api-7.6.0.jar urls[17] = file:/C:/Documents and Settings/agies/.m2/repository/sonic-mq/xercesImpl/7.6.0/xercesImpl-7.6.0.jar urls[18] = file:/C:/Documents and Settings/agies/.m2/repository/sonic-mq/MFdirectory/7.6.0/MFdirectory-7.6.0.jar urls[19] = file:/C:/Documents and Settings/agies/.m2/repository/log4j/log4j/1.2.14/log4j-1.2.14.jar urls[20] = file:/C:/Documents and Settings/agies/.m2/repository/sonic-mq/mfcontext/7.6.0/mfcontext-7.6.0.jar [FATAL ERROR] Container realm = plexus.core urls[0] = file:/c:/tools/maven2/lib/maven-2.0.9-uber.jar [INFO] [ERROR] FATAL ERROR [INFO] [INFO] null [INFO] [INFO] Trace java.lang.IncompatibleClassChangeError at org.codehaus.plexus.archiver.zip.AbstractZipArchiver.createArchiveMain(AbstractZipArchiver.java:324) at org.codehaus.plexus.archiver.zip.AbstractZipArchiver.execute(AbstractZipArchiver.java:249) at org.codehaus.plexus.archiver.AbstractArchiver.createArchive(AbstractArchiver.java:762) at com.sonicsw.maven.plugins.MavenEsbPa
Re: Using a Pleus component in a plugin
Hi, It looks you want a zipArchiver. You can use : /** * The Jar archiver. * * @parameter expression="${component.org.codehaus.plexus.archiver.Archiver#zip}" * @required */ private ZipArchiver zipArchiver; Or with the new annotation /** * The Jar archiver. * * @component role="org.codehaus.plexus.archiver.Archiver" roleHint="zip" * @required */ private ZipArchiver zipArchiver; HTH, -- Olivier 2008/7/27 Andreas Gies <[EMAIL PROTECTED]>: > Hello, > > I am inteh process of writing a series of plugins. The last plugin is > supposed to package some generated sourcefiles into an archive. > I was thinking to reuse the Archiver Component from the plexus libraries for > this. So my code looks like this: > > package com.sonicsw.maven.plugins; > > import java.io.File; > > import org.apache.maven.plugin.MojoExecutionException; > import org.apache.maven.plugin.MojoFailureException; > import org.codehaus.plexus.archiver.Archiver; > import org.codehaus.plexus.archiver.manager.ArchiverManager; > > /** > * Packaging an ESB application. > * > * @goal package > */ > > public class MavenEsbPackage extends AbstractESBMojo { > > /** > * To look up Archiver/UnArchiver implementations > * > * @parameter > expression="${component.org.codehaus.plexus.archiver.manager.ArchiverManager}" > */ > protected ArchiverManager archiverManager; > > public void execute() throws MojoExecutionException, MojoFailureException { > > getLog().info("Packaging ESB application: "); > getLog().info("Project : " + artifactId); getLog().info("Group : " + > groupId); getLog().info("Version : " + version); > getLog().info("Source : " + sourceDirectory); > getLog().info("Build : " + buildDirectory); > getLog().info("XAR : " + xarDirectory); > > File archiveFile = new File(buildDirectory, finalName + ".xar"); > > try { > getLog().info("Creating archive : " + archiveFile.getAbsolutePath()); > Archiver archiver = archiverManager.getArchiver("zip"); > > archiver.setDestFile(archiveFile); > //archiver.addDirectory(new File(buildDirectory, xarDirectory)); > archiver.addDirectory(new File("generated-src/" + xarDirectory)); > archiver.createArchive(); > } catch(Exception e) { > throw new MojoExecutionException("Failed to create ESB archive " + > archiveFile.getAbsolutePath(), e); > } > } > } > > However, when I try to retrieve the Archiver, I get a NPE: > > [INFO] Trace > org.apache.maven.lifecycle.LifecycleExecutionException: Failed to create ESB > archive > E:\LHSys\maven\snapshots\com.lhsystems.iocc\iocc-esb-flow-pubopflightp\1.0-SNAPSHOT\target\iocc-esb-flow-pubopflightp-1.0-SNAPSHOT.xar > at > org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:583) > at > org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:499) > at > org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:478) > at > org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:330) > at > org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:291) > at > org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:142) > at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:336) > at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:129) > at org.apache.maven.cli.MavenCli.main(MavenCli.java:287) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:585) > at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315) > at org.codehaus.classworlds.Launcher.launch(Launcher.java:255) > at > org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430) > at org.codehaus.classworlds.Launcher.main(Launcher.java:375) > Caused by: org.apache.maven.plugin.MojoExecutionException: Failed to create > ESB archive > E:\LHSys\maven\snapshots\com.lhsystems.iocc\iocc-esb-flow-pubopflightp\1.0-SNAPSHOT\target\iocc-esb-flow-pubopflightp-1.0-SNAPSHOT.xar > at > com.sonicsw.maven.plugins.MavenEsbPackage.execute(MavenEsbPackage.java:49) > at > org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:451) > at > org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:558) > ... 16 more > Caused by: java.lang.NullPointerException > at > org.codehaus.plexus.archiver.manager.DefaultArchiverManager.getArchiver(DefaultArchiverManager.java:60) > at > com.so
Using a Pleus component in a plugin
Hello, I am inteh process of writing a series of plugins. The last plugin is supposed to package some generated sourcefiles into an archive. I was thinking to reuse the Archiver Component from the plexus libraries for this. So my code looks like this: package com.sonicsw.maven.plugins; import java.io.File; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugin.MojoFailureException; import org.codehaus.plexus.archiver.Archiver; import org.codehaus.plexus.archiver.manager.ArchiverManager; /** * Packaging an ESB application. * * @goal package */ public class MavenEsbPackage extends AbstractESBMojo { /** * To look up Archiver/UnArchiver implementations * * @parameter expression="${component.org.codehaus.plexus.archiver.manager.ArchiverManager}" */ protected ArchiverManager archiverManager; public void execute() throws MojoExecutionException, MojoFailureException { getLog().info("Packaging ESB application: "); getLog().info("Project : " + artifactId); getLog().info("Group : " + groupId); getLog().info("Version : " + version); getLog().info("Source : " + sourceDirectory); getLog().info("Build : " + buildDirectory); getLog().info("XAR : " + xarDirectory); File archiveFile = new File(buildDirectory, finalName + ".xar"); try { getLog().info("Creating archive : " + archiveFile.getAbsolutePath()); Archiver archiver = archiverManager.getArchiver("zip"); archiver.setDestFile(archiveFile); //archiver.addDirectory(new File(buildDirectory, xarDirectory)); archiver.addDirectory(new File("generated-src/" + xarDirectory)); archiver.createArchive(); } catch(Exception e) { throw new MojoExecutionException("Failed to create ESB archive " + archiveFile.getAbsolutePath(), e); } } } However, when I try to retrieve the Archiver, I get a NPE: [INFO] Trace org.apache.maven.lifecycle.LifecycleExecutionException: Failed to create ESB archive E:\LHSys\maven\snapshots\com.lhsystems.iocc\iocc-esb-flow-pubopflightp\1.0-SNAPSHOT\target\iocc-esb-flow-pubopflightp-1.0-SNAPSHOT.xar at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:583) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:499) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:478) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:330) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:291) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:142) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:336) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:129) at org.apache.maven.cli.MavenCli.main(MavenCli.java:287) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315) at org.codehaus.classworlds.Launcher.launch(Launcher.java:255) at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430) at org.codehaus.classworlds.Launcher.main(Launcher.java:375) Caused by: org.apache.maven.plugin.MojoExecutionException: Failed to create ESB archive E:\LHSys\maven\snapshots\com.lhsystems.iocc\iocc-esb-flow-pubopflightp\1.0-SNAPSHOT\target\iocc-esb-flow-pubopflightp-1.0-SNAPSHOT.xar at com.sonicsw.maven.plugins.MavenEsbPackage.execute(MavenEsbPackage.java:49) at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:451) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:558) ... 16 more Caused by: java.lang.NullPointerException at org.codehaus.plexus.archiver.manager.DefaultArchiverManager.getArchiver(DefaultArchiverManager.java:60) at com.sonicsw.maven.plugins.MavenEsbPackage.execute(MavenEsbPackage.java:41) ... 18 more It seems that the ArchiverManager doesn't know about the Plexus Context (looking at (DefaultArchiverManager.java:60) ). I am guessing that I miss a basic initialization step in order to reuse a component. Am I missing something?--Could you perhaps point me to more documentation on reusing components in a plugin (I have read the http://docs.codehaus.org/display/MAVENUSER/Mojo+Developer+Cookbook and the Mojo tutorial ...). Thanks in advance Andreas -