[ http://jira.andromda.org/browse/MAVEN-64?page=comments#action_14460 ]
Pawel Matras commented on MAVEN-64: ----------------------------------- Here is more robust version of the multi-source plugin (it will not fail on empty directories in pom.xml). Test source generation is made optional too. package org.andromda.maven.plugin.multisource; import java.util.Iterator; import java.util.List; import org.andromda.core.common.ResourceUtils; import org.apache.commons.lang.ObjectUtils; import org.apache.maven.plugin.AbstractMojo; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugin.MojoFailureException; import org.apache.maven.project.MavenProject; /** * A Mojo who's sole purpose is to allow multiple source roots * to be added to the project (since the Maven Compiler Plugin * doesn't allow it), this plugin should be removed if they * allow it in the future. * * @author Chad Brandon * @goal add-source * @phase generate-sources */ public class MultiSourceMojo extends AbstractMojo { /** * The source directories containing the sources to be compiled. * * @parameter * @required */ private List sourceDirectories; /** * The test source directories containing the sources to be compiled for test. * * @parameter */ private List testSourceDirectories; /** * The maven project. * * @parameter expression="${project}" * @required * @readonly * @description "the maven project to use" */ private MavenProject project; /** * @see org.apache.maven.plugin.Mojo#execute() */ public void execute() throws MojoExecutionException, MojoFailureException { String baseDirectory = ResourceUtils.normalizePath(ObjectUtils.toString(project.getBasedir()) + '/'); addNormalizedPaths( this.sourceDirectories, this.project.getCompileSourceRoots(), baseDirectory ); if (this.testSourceDirectories != null) { addNormalizedPaths( this.testSourceDirectories, this.project.getTestCompileSourceRoots(), baseDirectory ); } } private void addNormalizedPaths( List fromPaths, List toPaths, String baseDirectory ) { for (final Iterator iterator = fromPaths.iterator(); iterator.hasNext();) { String path = ResourceUtils.normalizePath((String)iterator.next()); if (path != null) { if (!path.startsWith(baseDirectory)) { path = ResourceUtils.normalizePath(baseDirectory + path); } toPaths.add(path); } } } } > Support for test-multi-source in maven > -------------------------------------- > > Key: MAVEN-64 > URL: http://jira.andromda.org/browse/MAVEN-64 > Project: Maven Plugins > Type: New Feature > Environment: maven 2.0.4, jdk 1.5 > Reporter: Pawel Matras > Assignee: Chad Brandon > > Modified version of > andromda-all/maven/2/multi-source/src/main/java/org/andromda/maven/plugin/MultiSourceMojo.java > follows (as I can not see an other way of attaching it). It adds to current > implementation a possibility for additional test source paths. Usage is > similar to existing one. In addition or instead of the <sourceDirectories> > tag you use <testSourceDirectories> tag in plugin configuration. > I have tested it with maven 2.0.4 and jdk 1.5. > It would be fine if this or similar patch could be applied on the > 3.3-SNAPSHOT branch and newer. > ----------------------------- MultiSourceMojo.java > ----------------------------------- > package org.andromda.maven.plugin.multisource; > import java.util.Iterator; > import java.util.List; > import org.andromda.core.common.ResourceUtils; > import org.apache.commons.lang.ObjectUtils; > import org.apache.maven.plugin.AbstractMojo; > import org.apache.maven.plugin.MojoExecutionException; > import org.apache.maven.plugin.MojoFailureException; > import org.apache.maven.project.MavenProject; > /** > * A Mojo who's sole purpose is to allow multiple source roots > * to be added to the project (since the Maven Compiler Plugin > * doesn't allow it), this plugin should be removed if they > * allow it in the future. > * > * @author Chad Brandon > * @goal add-source > * @phase generate-sources > */ > public class MultiSourceMojo > extends AbstractMojo > { > /** > * The source directories containing the sources to be compiled. > * > * @parameter > * @required > */ > private List sourceDirectories; > /** > * The test source directories containing the sources to be compiled for > test. > * > * @parameter > * @required > */ > private List testSourceDirectories; > /** > * The maven project. > * > * @parameter expression="${project}" > * @required > * @readonly > * @description "the maven project to use" > */ > private MavenProject project; > /** > * @see org.apache.maven.plugin.Mojo#execute() > */ > public void execute() > throws MojoExecutionException, MojoFailureException > { > String baseDirectory = > ResourceUtils.normalizePath(ObjectUtils.toString(project.getBasedir()) + '/'); > addNormalizedPaths( this.sourceDirectories, > this.project.getCompileSourceRoots(), baseDirectory ); > addNormalizedPaths( this.testSourceDirectories, > this.project.getTestCompileSourceRoots(), baseDirectory ); > } > > private void addNormalizedPaths( List fromPaths, List toPaths, String > baseDirectory ) > { > for (final Iterator iterator = fromPaths.iterator(); > iterator.hasNext();) > { > String path = > ResourceUtils.normalizePath((String)iterator.next()); > if (!path.startsWith(baseDirectory)) > { > path = ResourceUtils.normalizePath(baseDirectory + path); > } > toPaths.add(path); > } > } > } -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://jira.andromda.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira ------------------------------------------------------------------------- This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/