You are viewing a plain text version of this content. The canonical link for it is here.
Posted to nmaven-dev@incubator.apache.org by Shane Isbell <sh...@gmail.com> on 2008/01/10 03:25:51 UTC

Re: svn commit: r608757 - in /incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler: AbstractCompilerMojo.java CompilerMojo.java TestCompilerMojo.java

If the project type is say dotnet:exe, this code in the AbstractCompilerMojo
is going to compile the test library also as a dotnet:exe, when it should be
compiled to a library.

        compilerConfig.setArtifactType(
            ArtifactType.valueOf( project.getPackaging().split( "[:]"
)[1].toUpperCase() ) );

Also
 keyInfo.setKeyFileUri( keyfile.toURI() );

needlessly signs the test artifact.

Specifying a single target language within the AbstractCompilerMojo a makes
it impossible to write the unit tests and main source files in different
languages.
Shane
On Jan 3, 2008 10:38 PM, <ew...@apache.org> wrote:

> Author: eworley
> Date: Thu Jan  3 22:38:03 2008
> New Revision: 608757
>
> URL: http://svn.apache.org/viewvc?rev=608757&view=rev
> Log:
> Cleaned up the abstract compiler mojo, base classes now passing
> configuration up, this is more flexible and removes the need for extraneous
> methods to control config
>
> Modified:
>
>  incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/AbstractCompilerMojo.java
>
>  incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/CompilerMojo.java
>
>  incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/TestCompilerMojo.java
>
> Modified:
> incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/AbstractCompilerMojo.java
> URL:
> http://svn.apache.org/viewvc/incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/AbstractCompilerMojo.java?rev=608757&r1=608756&r2=608757&view=diff
>
> ==============================================================================
> ---
> incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/AbstractCompilerMojo.java
> (original)
> +++
> incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/AbstractCompilerMojo.java
> Thu Jan  3 22:38:03 2008
> @@ -2,8 +2,6 @@
>
>  import java.io.File;
>  import java.io.IOException;
> -import java.net.URI;
> -import java.net.URISyntaxException;
>
>  import org.apache.maven.dotnet.ArtifactType;
>  import org.apache.maven.dotnet.InitializationException;
> @@ -84,7 +82,9 @@
>      *
>      * @throws MojoExecutionException
>      */
> -    protected File compile() throws MojoExecutionException {
> +    protected File compile( DotnetCompilerConfig compilerConfig )
> +        throws MojoExecutionException
> +    {
>         String outputDir = project.getBuild().getDirectory();
>         File sourceDir =
>             new File( outputDir, getSourceDirectoryName());
> @@ -105,7 +105,7 @@
>         }
>
>         getLog().info( ".NET Vendor: " + vendor );
> -        DotnetCompilerConfig compilerConfig =
> DotnetCompilerConfig.Factory.createDefaultCompilerConfig();
> +
>         compilerConfig.setArtifactType(
>             ArtifactType.valueOf( project.getPackaging().split( "[:]"
> )[1].toUpperCase() ) );
>         compilerConfig.setCompilerPlatformVersion(
> DotnetCompilerPlatformVersion.valueFromVersion( frameworkVersion ) );
> @@ -113,14 +113,7 @@
>         KeyInfo keyInfo = KeyInfo.Factory.createDefaultKeyInfo();
>         if ( keyfile != null )
>         {
> -//            try
> -//            {
> -                keyInfo.setKeyFileUri( keyfile.toURI() );
> -//            }
> -//            catch ( URISyntaxException e )
> -//            {
> -//                throw new MojoExecutionException( e.getMessage() );
> -//            }
> +            keyInfo.setKeyFileUri( keyfile.toURI() );
>         }
>
>         keyInfo.setKeyContainerName( keycontainer );
> @@ -128,7 +121,6 @@
>
>         compilerConfig.setLocalRepository( localRepository );
>         compilerConfig.setProgrammingLanguage( ProgrammingLanguage.C_SHARP);
> -        compilerConfig.setTestCompile( isTestCompile() );
>         compilerConfig.setCompilerSourceDirectory( sourceDir );
>         compilerConfig.setVendor( vendor );
>         compilerConfig.setTargetDirectory( new File( outputDir ) );
> @@ -173,14 +165,5 @@
>      */
>     protected String getAssemblySuffix() {
>         return "";
> -    }
> -
> -    /**
> -     * Sub classes can override this to configure the compiler
> -     * for test compilation
> -     * @return <code>boolean</code> true if test compile, else false
> -     */
> -    protected boolean isTestCompile() {
> -        return false;
>     }
>  }
>
> Modified:
> incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/CompilerMojo.java
> URL:
> http://svn.apache.org/viewvc/incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/CompilerMojo.java?rev=608757&r1=608756&r2=608757&view=diff
>
> ==============================================================================
> ---
> incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/CompilerMojo.java
> (original)
> +++
> incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/CompilerMojo.java
> Thu Jan  3 22:38:03 2008
> @@ -18,7 +18,10 @@
>  */
>  package org.apache.maven.dotnet.plugin.compiler;
>
> +import java.io.File;
> +
>  import org.apache.maven.dotnet.BuildDirectories;
> +import org.apache.maven.dotnet.compiler.DotnetCompilerConfig;
>  import org.apache.maven.plugin.MojoExecutionException;
>  import org.apache.maven.plugin.MojoFailureException;
>
> @@ -42,6 +45,9 @@
>     public void execute()
>         throws MojoExecutionException, MojoFailureException
>     {
> -        project.getArtifact().setFile( compile() );
> +        DotnetCompilerConfig compilerConfig =
> DotnetCompilerConfig.Factory.createDefaultCompilerConfig();
> +
> +        File assembly = compile( compilerConfig );
> +        project.getArtifact().setFile( assembly );
>     }
>  }
>
> Modified:
> incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/TestCompilerMojo.java
> URL:
> http://svn.apache.org/viewvc/incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/TestCompilerMojo.java?rev=608757&r1=608756&r2=608757&view=diff
>
> ==============================================================================
> ---
> incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/TestCompilerMojo.java
> (original)
> +++
> incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/TestCompilerMojo.java
> Thu Jan  3 22:38:03 2008
> @@ -19,6 +19,7 @@
>  package org.apache.maven.dotnet.plugin.compiler;
>
>  import org.apache.maven.dotnet.BuildDirectories;
> +import org.apache.maven.dotnet.compiler.DotnetCompilerConfig;
>  import org.apache.maven.plugin.MojoExecutionException;
>  import org.apache.maven.plugin.MojoFailureException;
>
> @@ -43,7 +44,11 @@
>             return;
>         }
>
> -        compile();
> +        DotnetCompilerConfig compilerConfig =
> DotnetCompilerConfig.Factory.createDefaultCompilerConfig();
> +
> +        compilerConfig.setTestCompile( true );
> +
> +        compile( compilerConfig );
>     }
>
>     @Override
> @@ -56,11 +61,5 @@
>     protected String getAssemblySuffix()
>     {
>         return "-test";
> -    }
> -
> -    @Override
> -    protected boolean isTestCompile()
> -    {
> -        return true;
>     }
>  }
>
>
>

Re: svn commit: r608757 - in /incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler: AbstractCompilerMojo.java CompilerMojo.java TestCompilerMojo.java

Posted by Shane Isbell <sh...@gmail.com>.
The source and test source processors copy the relevant files to the target
directory and the other mojos should be operating off of the
pre-processed target/build-sources directory, in which case other mojos
shouldn't need to know anything about the visual studio directories. But of
course, this is subject to change as we build out the other plugins.

Shane
On Jan 10, 2008 10:31 AM, Evan Worley <ev...@gmail.com> wrote:

> Should those directories be captured in something similar to the
> BuildDirectories enumeration?  It seems like more than one Mojo will want
> to
> know about the directories to ignore.
>
> -Evan
>
> On Jan 10, 2008 10:22 AM, Shane Isbell <sh...@gmail.com> wrote:
>
> > The excludes are for Visual Studio generated files which we don't want
> > copied: they should be hard-coded. With the flat directory structure,
> the
> > main source files are located in the projectA directory. The test class
> > files are located in the projectA/Test directory, so the main processor
> > needs to exclude the ./Test, while the test processor needs to copy only
> > those files under the ./Test directory.  If we start creating abstract
> > mojos, we break encapsulation and just need to be more careful about the
> > shared configuration parameters.
> >
> > Shane
> > On Jan 10, 2008 12:54 AM, Evan Worley <ev...@gmail.com> wrote:
> >
> > > Ok, sounds fine.  You're the expert :)
> > >
> > > On the excludes front, it seems the hard coded excludes were just
> chosen
> > > randomly.  Should we have these entries, or rely on the other excludes
> > > which
> > > come from the pom configuration?
> > >
> > > -Evan
> > >
> > > On Jan 9, 2008 8:00 PM, Shane Isbell <sh...@gmail.com> wrote:
> > >
> > > > On Jan 9, 2008 7:31 PM, Evan Worley <ev...@gmail.com> wrote:
> > > >
> > > > > Right, the AbstractCompilerMojo was based on your CompilerMojo,
> with
> > > the
> > > > > unique bits pulled out to be specified by the concrete classes.
>  The
> > > > > setArtifactType was copied to the TestCompilerMojo, and hence
> > appeared
> > > > to
> > > > > be
> > > > > the same, but yes this needs to be fixed.  As for the set keyfile,
> > > that
> > > > > was
> > > > > directly from the CompilerMojo, so if it doesn't perform a check,
> > then
> > > > > that's how I found it.
> > > > >
> > > > > Abstracting the CompilerMojo and the SourceProcessor was a first
> > > attempt
> > > > > to
> > > > > unify the duplicate work that was being performed, it still needs
> > some
> > > > > work.  Please feel free to touch it up as you see fit, after all
> you
> > > > wrote
> > > > > 90% of the code in there.
> > > >
> > > >
> > > > Okay I'm going to revert back the AbstractCompilerMojo. The primary
> > job
> > > of
> > > > the abstract mojo is to set the CompilerConfig but since we have to
> > pass
> > > > up
> > > > a bunch of those configuration parameters from methods in the
> concrete
> > > > class
> > > > to the abstract class, we don't gain anything. All the real work is
> > > > handled
> > > > by the CSharpCompiler implementation anyway.
> > > >
> > > > Also the AbstractSourceProcessorMojo uses the same excludes list but
> > > since
> > > > we are using a flat directory structure, we can't do this. The main
> > > > compiler
> > > > needs to exclude the entire ./Test directory, while the test
> compiler
> > > > needs
> > > > to include only those classes under the ./Test directory.
> > > >
> > > > Shane
> > > >
> > > >
> > > > >
> > > > >
> > > > > Thanks for catching these,
> > > > > Evan
> > > > >
> > > > > On Jan 9, 2008 7:25 PM, Shane Isbell <sh...@gmail.com>
> wrote:
> > > > >
> > > > > > If the project type is say dotnet:exe, this code in the
> > > > > > AbstractCompilerMojo
> > > > > > is going to compile the test library also as a dotnet:exe, when
> it
> > > > > should
> > > > > > be
> > > > > > compiled to a library.
> > > > > >
> > > > > >        compilerConfig.setArtifactType(
> > > > > >            ArtifactType.valueOf( project.getPackaging().split(
> > "[:]"
> > > > > > )[1].toUpperCase() ) );
> > > > > >
> > > > > > Also
> > > > > >  keyInfo.setKeyFileUri( keyfile.toURI() );
> > > > > >
> > > > > > needlessly signs the test artifact.
> > > > > >
> > > > > > Specifying a single target language within the
> > AbstractCompilerMojo
> > > a
> > > > > > makes
> > > > > > it impossible to write the unit tests and main source files in
> > > > different
> > > > > > languages.
> > > > > > Shane
> > > > > > On Jan 3, 2008 10:38 PM, <ew...@apache.org> wrote:
> > > > > >
> > > > > > > Author: eworley
> > > > > > > Date: Thu Jan  3 22:38:03 2008
> > > > > > > New Revision: 608757
> > > > > > >
> > > > > > > URL: http://svn.apache.org/viewvc?rev=608757&view=rev
> > > > > > > Log:
> > > > > > > Cleaned up the abstract compiler mojo, base classes now
> passing
> > > > > > > configuration up, this is more flexible and removes the need
> for
> > > > > > extraneous
> > > > > > > methods to control config
> > > > > > >
> > > > > > > Modified:
> > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>  incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/AbstractCompilerMojo.java
> > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>  incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/CompilerMojo.java
> > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>  incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/TestCompilerMojo.java
> > > > > > >
> > > > > > > Modified:
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/AbstractCompilerMojo.java
> > > > > > > URL:
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> http://svn.apache.org/viewvc/incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/AbstractCompilerMojo.java?rev=608757&r1=608756&r2=608757&view=diff
> > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> ==============================================================================
> > > > > > > ---
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/AbstractCompilerMojo.java
> > > > > > > (original)
> > > > > > > +++
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/AbstractCompilerMojo.java
> > > > > > > Thu Jan  3 22:38:03 2008
> > > > > > > @@ -2,8 +2,6 @@
> > > > > > >
> > > > > > >  import java.io.File;
> > > > > > >  import java.io.IOException;
> > > > > > > -import java.net.URI;
> > > > > > > -import java.net.URISyntaxException;
> > > > > > >
> > > > > > >  import org.apache.maven.dotnet.ArtifactType;
> > > > > > >  import org.apache.maven.dotnet.InitializationException;
> > > > > > > @@ -84,7 +82,9 @@
> > > > > > >      *
> > > > > > >      * @throws MojoExecutionException
> > > > > > >      */
> > > > > > > -    protected File compile() throws MojoExecutionException {
> > > > > > > +    protected File compile( DotnetCompilerConfig
> compilerConfig
> > )
> > > > > > > +        throws MojoExecutionException
> > > > > > > +    {
> > > > > > >         String outputDir = project.getBuild().getDirectory();
> > > > > > >         File sourceDir =
> > > > > > >             new File( outputDir, getSourceDirectoryName());
> > > > > > > @@ -105,7 +105,7 @@
> > > > > > >         }
> > > > > > >
> > > > > > >         getLog().info( ".NET Vendor: " + vendor );
> > > > > > > -        DotnetCompilerConfig compilerConfig =
> > > > > > > DotnetCompilerConfig.Factory.createDefaultCompilerConfig();
> > > > > > > +
> > > > > > >         compilerConfig.setArtifactType(
> > > > > > >             ArtifactType.valueOf( project.getPackaging
> ().split(
> > > > "[:]"
> > > > > > > )[1].toUpperCase() ) );
> > > > > > >         compilerConfig.setCompilerPlatformVersion(
> > > > > > > DotnetCompilerPlatformVersion.valueFromVersion(
> frameworkVersion
> > )
> > > > );
> > > > > > > @@ -113,14 +113,7 @@
> > > > > > >         KeyInfo keyInfo = KeyInfo.Factory.createDefaultKeyInfo
> > ();
> > > > > > >         if ( keyfile != null )
> > > > > > >         {
> > > > > > > -//            try
> > > > > > > -//            {
> > > > > > > -                keyInfo.setKeyFileUri( keyfile.toURI() );
> > > > > > > -//            }
> > > > > > > -//            catch ( URISyntaxException e )
> > > > > > > -//            {
> > > > > > > -//                throw new MojoExecutionException(
> > e.getMessage
> > > ()
> > > > );
> > > > > > > -//            }
> > > > > > > +            keyInfo.setKeyFileUri( keyfile.toURI() );
> > > > > > >         }
> > > > > > >
> > > > > > >         keyInfo.setKeyContainerName( keycontainer );
> > > > > > > @@ -128,7 +121,6 @@
> > > > > > >
> > > > > > >         compilerConfig.setLocalRepository( localRepository );
> > > > > > >         compilerConfig.setProgrammingLanguage(
> > > > > > ProgrammingLanguage.C_SHARP);
> > > > > > > -        compilerConfig.setTestCompile( isTestCompile() );
> > > > > > >         compilerConfig.setCompilerSourceDirectory( sourceDir
> );
> > > > > > >         compilerConfig.setVendor( vendor );
> > > > > > >         compilerConfig.setTargetDirectory( new File( outputDir
> )
> > > );
> > > > > > > @@ -173,14 +165,5 @@
> > > > > > >      */
> > > > > > >     protected String getAssemblySuffix() {
> > > > > > >         return "";
> > > > > > > -    }
> > > > > > > -
> > > > > > > -    /**
> > > > > > > -     * Sub classes can override this to configure the
> compiler
> > > > > > > -     * for test compilation
> > > > > > > -     * @return <code>boolean</code> true if test compile,
> else
> > > > false
> > > > > > > -     */
> > > > > > > -    protected boolean isTestCompile() {
> > > > > > > -        return false;
> > > > > > >     }
> > > > > > >  }
> > > > > > >
> > > > > > > Modified:
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/CompilerMojo.java
> > > > > > > URL:
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> http://svn.apache.org/viewvc/incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/CompilerMojo.java?rev=608757&r1=608756&r2=608757&view=diff
> > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> ==============================================================================
> > > > > > > ---
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/CompilerMojo.java
> > > > > > > (original)
> > > > > > > +++
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/CompilerMojo.java
> > > > > > > Thu Jan  3 22:38:03 2008
> > > > > > > @@ -18,7 +18,10 @@
> > > > > > >  */
> > > > > > >  package org.apache.maven.dotnet.plugin.compiler;
> > > > > > >
> > > > > > > +import java.io.File;
> > > > > > > +
> > > > > > >  import org.apache.maven.dotnet.BuildDirectories;
> > > > > > > +import org.apache.maven.dotnet.compiler.DotnetCompilerConfig;
> > > > > > >  import org.apache.maven.plugin.MojoExecutionException;
> > > > > > >  import org.apache.maven.plugin.MojoFailureException;
> > > > > > >
> > > > > > > @@ -42,6 +45,9 @@
> > > > > > >     public void execute()
> > > > > > >         throws MojoExecutionException, MojoFailureException
> > > > > > >     {
> > > > > > > -        project.getArtifact().setFile( compile() );
> > > > > > > +        DotnetCompilerConfig compilerConfig =
> > > > > > > DotnetCompilerConfig.Factory.createDefaultCompilerConfig();
> > > > > > > +
> > > > > > > +        File assembly = compile( compilerConfig );
> > > > > > > +        project.getArtifact().setFile( assembly );
> > > > > > >     }
> > > > > > >  }
> > > > > > >
> > > > > > > Modified:
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/TestCompilerMojo.java
> > > > > > > URL:
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> http://svn.apache.org/viewvc/incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/TestCompilerMojo.java?rev=608757&r1=608756&r2=608757&view=diff
> > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> ==============================================================================
> > > > > > > ---
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/TestCompilerMojo.java
> > > > > > > (original)
> > > > > > > +++
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/TestCompilerMojo.java
> > > > > > > Thu Jan  3 22:38:03 2008
> > > > > > > @@ -19,6 +19,7 @@
> > > > > > >  package org.apache.maven.dotnet.plugin.compiler;
> > > > > > >
> > > > > > >  import org.apache.maven.dotnet.BuildDirectories;
> > > > > > > +import org.apache.maven.dotnet.compiler.DotnetCompilerConfig;
> > > > > > >  import org.apache.maven.plugin.MojoExecutionException;
> > > > > > >  import org.apache.maven.plugin.MojoFailureException;
> > > > > > >
> > > > > > > @@ -43,7 +44,11 @@
> > > > > > >             return;
> > > > > > >         }
> > > > > > >
> > > > > > > -        compile();
> > > > > > > +        DotnetCompilerConfig compilerConfig =
> > > > > > > DotnetCompilerConfig.Factory.createDefaultCompilerConfig();
> > > > > > > +
> > > > > > > +        compilerConfig.setTestCompile( true );
> > > > > > > +
> > > > > > > +        compile( compilerConfig );
> > > > > > >     }
> > > > > > >
> > > > > > >     @Override
> > > > > > > @@ -56,11 +61,5 @@
> > > > > > >     protected String getAssemblySuffix()
> > > > > > >     {
> > > > > > >         return "-test";
> > > > > > > -    }
> > > > > > > -
> > > > > > > -    @Override
> > > > > > > -    protected boolean isTestCompile()
> > > > > > > -    {
> > > > > > > -        return true;
> > > > > > >     }
> > > > > > >  }
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>

Re: svn commit: r608757 - in /incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler: AbstractCompilerMojo.java CompilerMojo.java TestCompilerMojo.java

Posted by Evan Worley <ev...@gmail.com>.
Should those directories be captured in something similar to the
BuildDirectories enumeration?  It seems like more than one Mojo will want to
know about the directories to ignore.

-Evan

On Jan 10, 2008 10:22 AM, Shane Isbell <sh...@gmail.com> wrote:

> The excludes are for Visual Studio generated files which we don't want
> copied: they should be hard-coded. With the flat directory structure, the
> main source files are located in the projectA directory. The test class
> files are located in the projectA/Test directory, so the main processor
> needs to exclude the ./Test, while the test processor needs to copy only
> those files under the ./Test directory.  If we start creating abstract
> mojos, we break encapsulation and just need to be more careful about the
> shared configuration parameters.
>
> Shane
> On Jan 10, 2008 12:54 AM, Evan Worley <ev...@gmail.com> wrote:
>
> > Ok, sounds fine.  You're the expert :)
> >
> > On the excludes front, it seems the hard coded excludes were just chosen
> > randomly.  Should we have these entries, or rely on the other excludes
> > which
> > come from the pom configuration?
> >
> > -Evan
> >
> > On Jan 9, 2008 8:00 PM, Shane Isbell <sh...@gmail.com> wrote:
> >
> > > On Jan 9, 2008 7:31 PM, Evan Worley <ev...@gmail.com> wrote:
> > >
> > > > Right, the AbstractCompilerMojo was based on your CompilerMojo, with
> > the
> > > > unique bits pulled out to be specified by the concrete classes.  The
> > > > setArtifactType was copied to the TestCompilerMojo, and hence
> appeared
> > > to
> > > > be
> > > > the same, but yes this needs to be fixed.  As for the set keyfile,
> > that
> > > > was
> > > > directly from the CompilerMojo, so if it doesn't perform a check,
> then
> > > > that's how I found it.
> > > >
> > > > Abstracting the CompilerMojo and the SourceProcessor was a first
> > attempt
> > > > to
> > > > unify the duplicate work that was being performed, it still needs
> some
> > > > work.  Please feel free to touch it up as you see fit, after all you
> > > wrote
> > > > 90% of the code in there.
> > >
> > >
> > > Okay I'm going to revert back the AbstractCompilerMojo. The primary
> job
> > of
> > > the abstract mojo is to set the CompilerConfig but since we have to
> pass
> > > up
> > > a bunch of those configuration parameters from methods in the concrete
> > > class
> > > to the abstract class, we don't gain anything. All the real work is
> > > handled
> > > by the CSharpCompiler implementation anyway.
> > >
> > > Also the AbstractSourceProcessorMojo uses the same excludes list but
> > since
> > > we are using a flat directory structure, we can't do this. The main
> > > compiler
> > > needs to exclude the entire ./Test directory, while the test compiler
> > > needs
> > > to include only those classes under the ./Test directory.
> > >
> > > Shane
> > >
> > >
> > > >
> > > >
> > > > Thanks for catching these,
> > > > Evan
> > > >
> > > > On Jan 9, 2008 7:25 PM, Shane Isbell <sh...@gmail.com> wrote:
> > > >
> > > > > If the project type is say dotnet:exe, this code in the
> > > > > AbstractCompilerMojo
> > > > > is going to compile the test library also as a dotnet:exe, when it
> > > > should
> > > > > be
> > > > > compiled to a library.
> > > > >
> > > > >        compilerConfig.setArtifactType(
> > > > >            ArtifactType.valueOf( project.getPackaging().split(
> "[:]"
> > > > > )[1].toUpperCase() ) );
> > > > >
> > > > > Also
> > > > >  keyInfo.setKeyFileUri( keyfile.toURI() );
> > > > >
> > > > > needlessly signs the test artifact.
> > > > >
> > > > > Specifying a single target language within the
> AbstractCompilerMojo
> > a
> > > > > makes
> > > > > it impossible to write the unit tests and main source files in
> > > different
> > > > > languages.
> > > > > Shane
> > > > > On Jan 3, 2008 10:38 PM, <ew...@apache.org> wrote:
> > > > >
> > > > > > Author: eworley
> > > > > > Date: Thu Jan  3 22:38:03 2008
> > > > > > New Revision: 608757
> > > > > >
> > > > > > URL: http://svn.apache.org/viewvc?rev=608757&view=rev
> > > > > > Log:
> > > > > > Cleaned up the abstract compiler mojo, base classes now passing
> > > > > > configuration up, this is more flexible and removes the need for
> > > > > extraneous
> > > > > > methods to control config
> > > > > >
> > > > > > Modified:
> > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>  incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/AbstractCompilerMojo.java
> > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>  incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/CompilerMojo.java
> > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>  incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/TestCompilerMojo.java
> > > > > >
> > > > > > Modified:
> > > > > >
> > > > >
> > > >
> > >
> >
> incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/AbstractCompilerMojo.java
> > > > > > URL:
> > > > > >
> > > > >
> > > >
> > >
> >
> http://svn.apache.org/viewvc/incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/AbstractCompilerMojo.java?rev=608757&r1=608756&r2=608757&view=diff
> > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> ==============================================================================
> > > > > > ---
> > > > > >
> > > > >
> > > >
> > >
> >
> incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/AbstractCompilerMojo.java
> > > > > > (original)
> > > > > > +++
> > > > > >
> > > > >
> > > >
> > >
> >
> incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/AbstractCompilerMojo.java
> > > > > > Thu Jan  3 22:38:03 2008
> > > > > > @@ -2,8 +2,6 @@
> > > > > >
> > > > > >  import java.io.File;
> > > > > >  import java.io.IOException;
> > > > > > -import java.net.URI;
> > > > > > -import java.net.URISyntaxException;
> > > > > >
> > > > > >  import org.apache.maven.dotnet.ArtifactType;
> > > > > >  import org.apache.maven.dotnet.InitializationException;
> > > > > > @@ -84,7 +82,9 @@
> > > > > >      *
> > > > > >      * @throws MojoExecutionException
> > > > > >      */
> > > > > > -    protected File compile() throws MojoExecutionException {
> > > > > > +    protected File compile( DotnetCompilerConfig compilerConfig
> )
> > > > > > +        throws MojoExecutionException
> > > > > > +    {
> > > > > >         String outputDir = project.getBuild().getDirectory();
> > > > > >         File sourceDir =
> > > > > >             new File( outputDir, getSourceDirectoryName());
> > > > > > @@ -105,7 +105,7 @@
> > > > > >         }
> > > > > >
> > > > > >         getLog().info( ".NET Vendor: " + vendor );
> > > > > > -        DotnetCompilerConfig compilerConfig =
> > > > > > DotnetCompilerConfig.Factory.createDefaultCompilerConfig();
> > > > > > +
> > > > > >         compilerConfig.setArtifactType(
> > > > > >             ArtifactType.valueOf( project.getPackaging().split(
> > > "[:]"
> > > > > > )[1].toUpperCase() ) );
> > > > > >         compilerConfig.setCompilerPlatformVersion(
> > > > > > DotnetCompilerPlatformVersion.valueFromVersion( frameworkVersion
> )
> > > );
> > > > > > @@ -113,14 +113,7 @@
> > > > > >         KeyInfo keyInfo = KeyInfo.Factory.createDefaultKeyInfo
> ();
> > > > > >         if ( keyfile != null )
> > > > > >         {
> > > > > > -//            try
> > > > > > -//            {
> > > > > > -                keyInfo.setKeyFileUri( keyfile.toURI() );
> > > > > > -//            }
> > > > > > -//            catch ( URISyntaxException e )
> > > > > > -//            {
> > > > > > -//                throw new MojoExecutionException(
> e.getMessage
> > ()
> > > );
> > > > > > -//            }
> > > > > > +            keyInfo.setKeyFileUri( keyfile.toURI() );
> > > > > >         }
> > > > > >
> > > > > >         keyInfo.setKeyContainerName( keycontainer );
> > > > > > @@ -128,7 +121,6 @@
> > > > > >
> > > > > >         compilerConfig.setLocalRepository( localRepository );
> > > > > >         compilerConfig.setProgrammingLanguage(
> > > > > ProgrammingLanguage.C_SHARP);
> > > > > > -        compilerConfig.setTestCompile( isTestCompile() );
> > > > > >         compilerConfig.setCompilerSourceDirectory( sourceDir );
> > > > > >         compilerConfig.setVendor( vendor );
> > > > > >         compilerConfig.setTargetDirectory( new File( outputDir )
> > );
> > > > > > @@ -173,14 +165,5 @@
> > > > > >      */
> > > > > >     protected String getAssemblySuffix() {
> > > > > >         return "";
> > > > > > -    }
> > > > > > -
> > > > > > -    /**
> > > > > > -     * Sub classes can override this to configure the compiler
> > > > > > -     * for test compilation
> > > > > > -     * @return <code>boolean</code> true if test compile, else
> > > false
> > > > > > -     */
> > > > > > -    protected boolean isTestCompile() {
> > > > > > -        return false;
> > > > > >     }
> > > > > >  }
> > > > > >
> > > > > > Modified:
> > > > > >
> > > > >
> > > >
> > >
> >
> incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/CompilerMojo.java
> > > > > > URL:
> > > > > >
> > > > >
> > > >
> > >
> >
> http://svn.apache.org/viewvc/incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/CompilerMojo.java?rev=608757&r1=608756&r2=608757&view=diff
> > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> ==============================================================================
> > > > > > ---
> > > > > >
> > > > >
> > > >
> > >
> >
> incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/CompilerMojo.java
> > > > > > (original)
> > > > > > +++
> > > > > >
> > > > >
> > > >
> > >
> >
> incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/CompilerMojo.java
> > > > > > Thu Jan  3 22:38:03 2008
> > > > > > @@ -18,7 +18,10 @@
> > > > > >  */
> > > > > >  package org.apache.maven.dotnet.plugin.compiler;
> > > > > >
> > > > > > +import java.io.File;
> > > > > > +
> > > > > >  import org.apache.maven.dotnet.BuildDirectories;
> > > > > > +import org.apache.maven.dotnet.compiler.DotnetCompilerConfig;
> > > > > >  import org.apache.maven.plugin.MojoExecutionException;
> > > > > >  import org.apache.maven.plugin.MojoFailureException;
> > > > > >
> > > > > > @@ -42,6 +45,9 @@
> > > > > >     public void execute()
> > > > > >         throws MojoExecutionException, MojoFailureException
> > > > > >     {
> > > > > > -        project.getArtifact().setFile( compile() );
> > > > > > +        DotnetCompilerConfig compilerConfig =
> > > > > > DotnetCompilerConfig.Factory.createDefaultCompilerConfig();
> > > > > > +
> > > > > > +        File assembly = compile( compilerConfig );
> > > > > > +        project.getArtifact().setFile( assembly );
> > > > > >     }
> > > > > >  }
> > > > > >
> > > > > > Modified:
> > > > > >
> > > > >
> > > >
> > >
> >
> incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/TestCompilerMojo.java
> > > > > > URL:
> > > > > >
> > > > >
> > > >
> > >
> >
> http://svn.apache.org/viewvc/incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/TestCompilerMojo.java?rev=608757&r1=608756&r2=608757&view=diff
> > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> ==============================================================================
> > > > > > ---
> > > > > >
> > > > >
> > > >
> > >
> >
> incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/TestCompilerMojo.java
> > > > > > (original)
> > > > > > +++
> > > > > >
> > > > >
> > > >
> > >
> >
> incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/TestCompilerMojo.java
> > > > > > Thu Jan  3 22:38:03 2008
> > > > > > @@ -19,6 +19,7 @@
> > > > > >  package org.apache.maven.dotnet.plugin.compiler;
> > > > > >
> > > > > >  import org.apache.maven.dotnet.BuildDirectories;
> > > > > > +import org.apache.maven.dotnet.compiler.DotnetCompilerConfig;
> > > > > >  import org.apache.maven.plugin.MojoExecutionException;
> > > > > >  import org.apache.maven.plugin.MojoFailureException;
> > > > > >
> > > > > > @@ -43,7 +44,11 @@
> > > > > >             return;
> > > > > >         }
> > > > > >
> > > > > > -        compile();
> > > > > > +        DotnetCompilerConfig compilerConfig =
> > > > > > DotnetCompilerConfig.Factory.createDefaultCompilerConfig();
> > > > > > +
> > > > > > +        compilerConfig.setTestCompile( true );
> > > > > > +
> > > > > > +        compile( compilerConfig );
> > > > > >     }
> > > > > >
> > > > > >     @Override
> > > > > > @@ -56,11 +61,5 @@
> > > > > >     protected String getAssemblySuffix()
> > > > > >     {
> > > > > >         return "-test";
> > > > > > -    }
> > > > > > -
> > > > > > -    @Override
> > > > > > -    protected boolean isTestCompile()
> > > > > > -    {
> > > > > > -        return true;
> > > > > >     }
> > > > > >  }
> > > > > >
> > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>

Re: svn commit: r608757 - in /incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler: AbstractCompilerMojo.java CompilerMojo.java TestCompilerMojo.java

Posted by Shane Isbell <sh...@gmail.com>.
The excludes are for Visual Studio generated files which we don't want
copied: they should be hard-coded. With the flat directory structure, the
main source files are located in the projectA directory. The test class
files are located in the projectA/Test directory, so the main processor
needs to exclude the ./Test, while the test processor needs to copy only
those files under the ./Test directory.  If we start creating abstract
mojos, we break encapsulation and just need to be more careful about the
shared configuration parameters.

Shane
On Jan 10, 2008 12:54 AM, Evan Worley <ev...@gmail.com> wrote:

> Ok, sounds fine.  You're the expert :)
>
> On the excludes front, it seems the hard coded excludes were just chosen
> randomly.  Should we have these entries, or rely on the other excludes
> which
> come from the pom configuration?
>
> -Evan
>
> On Jan 9, 2008 8:00 PM, Shane Isbell <sh...@gmail.com> wrote:
>
> > On Jan 9, 2008 7:31 PM, Evan Worley <ev...@gmail.com> wrote:
> >
> > > Right, the AbstractCompilerMojo was based on your CompilerMojo, with
> the
> > > unique bits pulled out to be specified by the concrete classes.  The
> > > setArtifactType was copied to the TestCompilerMojo, and hence appeared
> > to
> > > be
> > > the same, but yes this needs to be fixed.  As for the set keyfile,
> that
> > > was
> > > directly from the CompilerMojo, so if it doesn't perform a check, then
> > > that's how I found it.
> > >
> > > Abstracting the CompilerMojo and the SourceProcessor was a first
> attempt
> > > to
> > > unify the duplicate work that was being performed, it still needs some
> > > work.  Please feel free to touch it up as you see fit, after all you
> > wrote
> > > 90% of the code in there.
> >
> >
> > Okay I'm going to revert back the AbstractCompilerMojo. The primary job
> of
> > the abstract mojo is to set the CompilerConfig but since we have to pass
> > up
> > a bunch of those configuration parameters from methods in the concrete
> > class
> > to the abstract class, we don't gain anything. All the real work is
> > handled
> > by the CSharpCompiler implementation anyway.
> >
> > Also the AbstractSourceProcessorMojo uses the same excludes list but
> since
> > we are using a flat directory structure, we can't do this. The main
> > compiler
> > needs to exclude the entire ./Test directory, while the test compiler
> > needs
> > to include only those classes under the ./Test directory.
> >
> > Shane
> >
> >
> > >
> > >
> > > Thanks for catching these,
> > > Evan
> > >
> > > On Jan 9, 2008 7:25 PM, Shane Isbell <sh...@gmail.com> wrote:
> > >
> > > > If the project type is say dotnet:exe, this code in the
> > > > AbstractCompilerMojo
> > > > is going to compile the test library also as a dotnet:exe, when it
> > > should
> > > > be
> > > > compiled to a library.
> > > >
> > > >        compilerConfig.setArtifactType(
> > > >            ArtifactType.valueOf( project.getPackaging().split( "[:]"
> > > > )[1].toUpperCase() ) );
> > > >
> > > > Also
> > > >  keyInfo.setKeyFileUri( keyfile.toURI() );
> > > >
> > > > needlessly signs the test artifact.
> > > >
> > > > Specifying a single target language within the AbstractCompilerMojo
> a
> > > > makes
> > > > it impossible to write the unit tests and main source files in
> > different
> > > > languages.
> > > > Shane
> > > > On Jan 3, 2008 10:38 PM, <ew...@apache.org> wrote:
> > > >
> > > > > Author: eworley
> > > > > Date: Thu Jan  3 22:38:03 2008
> > > > > New Revision: 608757
> > > > >
> > > > > URL: http://svn.apache.org/viewvc?rev=608757&view=rev
> > > > > Log:
> > > > > Cleaned up the abstract compiler mojo, base classes now passing
> > > > > configuration up, this is more flexible and removes the need for
> > > > extraneous
> > > > > methods to control config
> > > > >
> > > > > Modified:
> > > > >
> > > > >
> > > >
> > >
> >
>  incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/AbstractCompilerMojo.java
> > > > >
> > > > >
> > > >
> > >
> >
>  incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/CompilerMojo.java
> > > > >
> > > > >
> > > >
> > >
> >
>  incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/TestCompilerMojo.java
> > > > >
> > > > > Modified:
> > > > >
> > > >
> > >
> >
> incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/AbstractCompilerMojo.java
> > > > > URL:
> > > > >
> > > >
> > >
> >
> http://svn.apache.org/viewvc/incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/AbstractCompilerMojo.java?rev=608757&r1=608756&r2=608757&view=diff
> > > > >
> > > > >
> > > >
> > >
> >
> ==============================================================================
> > > > > ---
> > > > >
> > > >
> > >
> >
> incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/AbstractCompilerMojo.java
> > > > > (original)
> > > > > +++
> > > > >
> > > >
> > >
> >
> incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/AbstractCompilerMojo.java
> > > > > Thu Jan  3 22:38:03 2008
> > > > > @@ -2,8 +2,6 @@
> > > > >
> > > > >  import java.io.File;
> > > > >  import java.io.IOException;
> > > > > -import java.net.URI;
> > > > > -import java.net.URISyntaxException;
> > > > >
> > > > >  import org.apache.maven.dotnet.ArtifactType;
> > > > >  import org.apache.maven.dotnet.InitializationException;
> > > > > @@ -84,7 +82,9 @@
> > > > >      *
> > > > >      * @throws MojoExecutionException
> > > > >      */
> > > > > -    protected File compile() throws MojoExecutionException {
> > > > > +    protected File compile( DotnetCompilerConfig compilerConfig )
> > > > > +        throws MojoExecutionException
> > > > > +    {
> > > > >         String outputDir = project.getBuild().getDirectory();
> > > > >         File sourceDir =
> > > > >             new File( outputDir, getSourceDirectoryName());
> > > > > @@ -105,7 +105,7 @@
> > > > >         }
> > > > >
> > > > >         getLog().info( ".NET Vendor: " + vendor );
> > > > > -        DotnetCompilerConfig compilerConfig =
> > > > > DotnetCompilerConfig.Factory.createDefaultCompilerConfig();
> > > > > +
> > > > >         compilerConfig.setArtifactType(
> > > > >             ArtifactType.valueOf( project.getPackaging().split(
> > "[:]"
> > > > > )[1].toUpperCase() ) );
> > > > >         compilerConfig.setCompilerPlatformVersion(
> > > > > DotnetCompilerPlatformVersion.valueFromVersion( frameworkVersion )
> > );
> > > > > @@ -113,14 +113,7 @@
> > > > >         KeyInfo keyInfo = KeyInfo.Factory.createDefaultKeyInfo();
> > > > >         if ( keyfile != null )
> > > > >         {
> > > > > -//            try
> > > > > -//            {
> > > > > -                keyInfo.setKeyFileUri( keyfile.toURI() );
> > > > > -//            }
> > > > > -//            catch ( URISyntaxException e )
> > > > > -//            {
> > > > > -//                throw new MojoExecutionException( e.getMessage
> ()
> > );
> > > > > -//            }
> > > > > +            keyInfo.setKeyFileUri( keyfile.toURI() );
> > > > >         }
> > > > >
> > > > >         keyInfo.setKeyContainerName( keycontainer );
> > > > > @@ -128,7 +121,6 @@
> > > > >
> > > > >         compilerConfig.setLocalRepository( localRepository );
> > > > >         compilerConfig.setProgrammingLanguage(
> > > > ProgrammingLanguage.C_SHARP);
> > > > > -        compilerConfig.setTestCompile( isTestCompile() );
> > > > >         compilerConfig.setCompilerSourceDirectory( sourceDir );
> > > > >         compilerConfig.setVendor( vendor );
> > > > >         compilerConfig.setTargetDirectory( new File( outputDir )
> );
> > > > > @@ -173,14 +165,5 @@
> > > > >      */
> > > > >     protected String getAssemblySuffix() {
> > > > >         return "";
> > > > > -    }
> > > > > -
> > > > > -    /**
> > > > > -     * Sub classes can override this to configure the compiler
> > > > > -     * for test compilation
> > > > > -     * @return <code>boolean</code> true if test compile, else
> > false
> > > > > -     */
> > > > > -    protected boolean isTestCompile() {
> > > > > -        return false;
> > > > >     }
> > > > >  }
> > > > >
> > > > > Modified:
> > > > >
> > > >
> > >
> >
> incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/CompilerMojo.java
> > > > > URL:
> > > > >
> > > >
> > >
> >
> http://svn.apache.org/viewvc/incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/CompilerMojo.java?rev=608757&r1=608756&r2=608757&view=diff
> > > > >
> > > > >
> > > >
> > >
> >
> ==============================================================================
> > > > > ---
> > > > >
> > > >
> > >
> >
> incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/CompilerMojo.java
> > > > > (original)
> > > > > +++
> > > > >
> > > >
> > >
> >
> incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/CompilerMojo.java
> > > > > Thu Jan  3 22:38:03 2008
> > > > > @@ -18,7 +18,10 @@
> > > > >  */
> > > > >  package org.apache.maven.dotnet.plugin.compiler;
> > > > >
> > > > > +import java.io.File;
> > > > > +
> > > > >  import org.apache.maven.dotnet.BuildDirectories;
> > > > > +import org.apache.maven.dotnet.compiler.DotnetCompilerConfig;
> > > > >  import org.apache.maven.plugin.MojoExecutionException;
> > > > >  import org.apache.maven.plugin.MojoFailureException;
> > > > >
> > > > > @@ -42,6 +45,9 @@
> > > > >     public void execute()
> > > > >         throws MojoExecutionException, MojoFailureException
> > > > >     {
> > > > > -        project.getArtifact().setFile( compile() );
> > > > > +        DotnetCompilerConfig compilerConfig =
> > > > > DotnetCompilerConfig.Factory.createDefaultCompilerConfig();
> > > > > +
> > > > > +        File assembly = compile( compilerConfig );
> > > > > +        project.getArtifact().setFile( assembly );
> > > > >     }
> > > > >  }
> > > > >
> > > > > Modified:
> > > > >
> > > >
> > >
> >
> incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/TestCompilerMojo.java
> > > > > URL:
> > > > >
> > > >
> > >
> >
> http://svn.apache.org/viewvc/incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/TestCompilerMojo.java?rev=608757&r1=608756&r2=608757&view=diff
> > > > >
> > > > >
> > > >
> > >
> >
> ==============================================================================
> > > > > ---
> > > > >
> > > >
> > >
> >
> incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/TestCompilerMojo.java
> > > > > (original)
> > > > > +++
> > > > >
> > > >
> > >
> >
> incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/TestCompilerMojo.java
> > > > > Thu Jan  3 22:38:03 2008
> > > > > @@ -19,6 +19,7 @@
> > > > >  package org.apache.maven.dotnet.plugin.compiler;
> > > > >
> > > > >  import org.apache.maven.dotnet.BuildDirectories;
> > > > > +import org.apache.maven.dotnet.compiler.DotnetCompilerConfig;
> > > > >  import org.apache.maven.plugin.MojoExecutionException;
> > > > >  import org.apache.maven.plugin.MojoFailureException;
> > > > >
> > > > > @@ -43,7 +44,11 @@
> > > > >             return;
> > > > >         }
> > > > >
> > > > > -        compile();
> > > > > +        DotnetCompilerConfig compilerConfig =
> > > > > DotnetCompilerConfig.Factory.createDefaultCompilerConfig();
> > > > > +
> > > > > +        compilerConfig.setTestCompile( true );
> > > > > +
> > > > > +        compile( compilerConfig );
> > > > >     }
> > > > >
> > > > >     @Override
> > > > > @@ -56,11 +61,5 @@
> > > > >     protected String getAssemblySuffix()
> > > > >     {
> > > > >         return "-test";
> > > > > -    }
> > > > > -
> > > > > -    @Override
> > > > > -    protected boolean isTestCompile()
> > > > > -    {
> > > > > -        return true;
> > > > >     }
> > > > >  }
> > > > >
> > > > >
> > > > >
> > > >
> > >
> >
>

Re: svn commit: r608757 - in /incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler: AbstractCompilerMojo.java CompilerMojo.java TestCompilerMojo.java

Posted by Evan Worley <ev...@gmail.com>.
Ok, sounds fine.  You're the expert :)

On the excludes front, it seems the hard coded excludes were just chosen
randomly.  Should we have these entries, or rely on the other excludes which
come from the pom configuration?

-Evan

On Jan 9, 2008 8:00 PM, Shane Isbell <sh...@gmail.com> wrote:

> On Jan 9, 2008 7:31 PM, Evan Worley <ev...@gmail.com> wrote:
>
> > Right, the AbstractCompilerMojo was based on your CompilerMojo, with the
> > unique bits pulled out to be specified by the concrete classes.  The
> > setArtifactType was copied to the TestCompilerMojo, and hence appeared
> to
> > be
> > the same, but yes this needs to be fixed.  As for the set keyfile, that
> > was
> > directly from the CompilerMojo, so if it doesn't perform a check, then
> > that's how I found it.
> >
> > Abstracting the CompilerMojo and the SourceProcessor was a first attempt
> > to
> > unify the duplicate work that was being performed, it still needs some
> > work.  Please feel free to touch it up as you see fit, after all you
> wrote
> > 90% of the code in there.
>
>
> Okay I'm going to revert back the AbstractCompilerMojo. The primary job of
> the abstract mojo is to set the CompilerConfig but since we have to pass
> up
> a bunch of those configuration parameters from methods in the concrete
> class
> to the abstract class, we don't gain anything. All the real work is
> handled
> by the CSharpCompiler implementation anyway.
>
> Also the AbstractSourceProcessorMojo uses the same excludes list but since
> we are using a flat directory structure, we can't do this. The main
> compiler
> needs to exclude the entire ./Test directory, while the test compiler
> needs
> to include only those classes under the ./Test directory.
>
> Shane
>
>
> >
> >
> > Thanks for catching these,
> > Evan
> >
> > On Jan 9, 2008 7:25 PM, Shane Isbell <sh...@gmail.com> wrote:
> >
> > > If the project type is say dotnet:exe, this code in the
> > > AbstractCompilerMojo
> > > is going to compile the test library also as a dotnet:exe, when it
> > should
> > > be
> > > compiled to a library.
> > >
> > >        compilerConfig.setArtifactType(
> > >            ArtifactType.valueOf( project.getPackaging().split( "[:]"
> > > )[1].toUpperCase() ) );
> > >
> > > Also
> > >  keyInfo.setKeyFileUri( keyfile.toURI() );
> > >
> > > needlessly signs the test artifact.
> > >
> > > Specifying a single target language within the AbstractCompilerMojo a
> > > makes
> > > it impossible to write the unit tests and main source files in
> different
> > > languages.
> > > Shane
> > > On Jan 3, 2008 10:38 PM, <ew...@apache.org> wrote:
> > >
> > > > Author: eworley
> > > > Date: Thu Jan  3 22:38:03 2008
> > > > New Revision: 608757
> > > >
> > > > URL: http://svn.apache.org/viewvc?rev=608757&view=rev
> > > > Log:
> > > > Cleaned up the abstract compiler mojo, base classes now passing
> > > > configuration up, this is more flexible and removes the need for
> > > extraneous
> > > > methods to control config
> > > >
> > > > Modified:
> > > >
> > > >
> > >
> >
>  incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/AbstractCompilerMojo.java
> > > >
> > > >
> > >
> >
>  incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/CompilerMojo.java
> > > >
> > > >
> > >
> >
>  incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/TestCompilerMojo.java
> > > >
> > > > Modified:
> > > >
> > >
> >
> incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/AbstractCompilerMojo.java
> > > > URL:
> > > >
> > >
> >
> http://svn.apache.org/viewvc/incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/AbstractCompilerMojo.java?rev=608757&r1=608756&r2=608757&view=diff
> > > >
> > > >
> > >
> >
> ==============================================================================
> > > > ---
> > > >
> > >
> >
> incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/AbstractCompilerMojo.java
> > > > (original)
> > > > +++
> > > >
> > >
> >
> incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/AbstractCompilerMojo.java
> > > > Thu Jan  3 22:38:03 2008
> > > > @@ -2,8 +2,6 @@
> > > >
> > > >  import java.io.File;
> > > >  import java.io.IOException;
> > > > -import java.net.URI;
> > > > -import java.net.URISyntaxException;
> > > >
> > > >  import org.apache.maven.dotnet.ArtifactType;
> > > >  import org.apache.maven.dotnet.InitializationException;
> > > > @@ -84,7 +82,9 @@
> > > >      *
> > > >      * @throws MojoExecutionException
> > > >      */
> > > > -    protected File compile() throws MojoExecutionException {
> > > > +    protected File compile( DotnetCompilerConfig compilerConfig )
> > > > +        throws MojoExecutionException
> > > > +    {
> > > >         String outputDir = project.getBuild().getDirectory();
> > > >         File sourceDir =
> > > >             new File( outputDir, getSourceDirectoryName());
> > > > @@ -105,7 +105,7 @@
> > > >         }
> > > >
> > > >         getLog().info( ".NET Vendor: " + vendor );
> > > > -        DotnetCompilerConfig compilerConfig =
> > > > DotnetCompilerConfig.Factory.createDefaultCompilerConfig();
> > > > +
> > > >         compilerConfig.setArtifactType(
> > > >             ArtifactType.valueOf( project.getPackaging().split(
> "[:]"
> > > > )[1].toUpperCase() ) );
> > > >         compilerConfig.setCompilerPlatformVersion(
> > > > DotnetCompilerPlatformVersion.valueFromVersion( frameworkVersion )
> );
> > > > @@ -113,14 +113,7 @@
> > > >         KeyInfo keyInfo = KeyInfo.Factory.createDefaultKeyInfo();
> > > >         if ( keyfile != null )
> > > >         {
> > > > -//            try
> > > > -//            {
> > > > -                keyInfo.setKeyFileUri( keyfile.toURI() );
> > > > -//            }
> > > > -//            catch ( URISyntaxException e )
> > > > -//            {
> > > > -//                throw new MojoExecutionException( e.getMessage()
> );
> > > > -//            }
> > > > +            keyInfo.setKeyFileUri( keyfile.toURI() );
> > > >         }
> > > >
> > > >         keyInfo.setKeyContainerName( keycontainer );
> > > > @@ -128,7 +121,6 @@
> > > >
> > > >         compilerConfig.setLocalRepository( localRepository );
> > > >         compilerConfig.setProgrammingLanguage(
> > > ProgrammingLanguage.C_SHARP);
> > > > -        compilerConfig.setTestCompile( isTestCompile() );
> > > >         compilerConfig.setCompilerSourceDirectory( sourceDir );
> > > >         compilerConfig.setVendor( vendor );
> > > >         compilerConfig.setTargetDirectory( new File( outputDir ) );
> > > > @@ -173,14 +165,5 @@
> > > >      */
> > > >     protected String getAssemblySuffix() {
> > > >         return "";
> > > > -    }
> > > > -
> > > > -    /**
> > > > -     * Sub classes can override this to configure the compiler
> > > > -     * for test compilation
> > > > -     * @return <code>boolean</code> true if test compile, else
> false
> > > > -     */
> > > > -    protected boolean isTestCompile() {
> > > > -        return false;
> > > >     }
> > > >  }
> > > >
> > > > Modified:
> > > >
> > >
> >
> incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/CompilerMojo.java
> > > > URL:
> > > >
> > >
> >
> http://svn.apache.org/viewvc/incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/CompilerMojo.java?rev=608757&r1=608756&r2=608757&view=diff
> > > >
> > > >
> > >
> >
> ==============================================================================
> > > > ---
> > > >
> > >
> >
> incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/CompilerMojo.java
> > > > (original)
> > > > +++
> > > >
> > >
> >
> incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/CompilerMojo.java
> > > > Thu Jan  3 22:38:03 2008
> > > > @@ -18,7 +18,10 @@
> > > >  */
> > > >  package org.apache.maven.dotnet.plugin.compiler;
> > > >
> > > > +import java.io.File;
> > > > +
> > > >  import org.apache.maven.dotnet.BuildDirectories;
> > > > +import org.apache.maven.dotnet.compiler.DotnetCompilerConfig;
> > > >  import org.apache.maven.plugin.MojoExecutionException;
> > > >  import org.apache.maven.plugin.MojoFailureException;
> > > >
> > > > @@ -42,6 +45,9 @@
> > > >     public void execute()
> > > >         throws MojoExecutionException, MojoFailureException
> > > >     {
> > > > -        project.getArtifact().setFile( compile() );
> > > > +        DotnetCompilerConfig compilerConfig =
> > > > DotnetCompilerConfig.Factory.createDefaultCompilerConfig();
> > > > +
> > > > +        File assembly = compile( compilerConfig );
> > > > +        project.getArtifact().setFile( assembly );
> > > >     }
> > > >  }
> > > >
> > > > Modified:
> > > >
> > >
> >
> incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/TestCompilerMojo.java
> > > > URL:
> > > >
> > >
> >
> http://svn.apache.org/viewvc/incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/TestCompilerMojo.java?rev=608757&r1=608756&r2=608757&view=diff
> > > >
> > > >
> > >
> >
> ==============================================================================
> > > > ---
> > > >
> > >
> >
> incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/TestCompilerMojo.java
> > > > (original)
> > > > +++
> > > >
> > >
> >
> incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/TestCompilerMojo.java
> > > > Thu Jan  3 22:38:03 2008
> > > > @@ -19,6 +19,7 @@
> > > >  package org.apache.maven.dotnet.plugin.compiler;
> > > >
> > > >  import org.apache.maven.dotnet.BuildDirectories;
> > > > +import org.apache.maven.dotnet.compiler.DotnetCompilerConfig;
> > > >  import org.apache.maven.plugin.MojoExecutionException;
> > > >  import org.apache.maven.plugin.MojoFailureException;
> > > >
> > > > @@ -43,7 +44,11 @@
> > > >             return;
> > > >         }
> > > >
> > > > -        compile();
> > > > +        DotnetCompilerConfig compilerConfig =
> > > > DotnetCompilerConfig.Factory.createDefaultCompilerConfig();
> > > > +
> > > > +        compilerConfig.setTestCompile( true );
> > > > +
> > > > +        compile( compilerConfig );
> > > >     }
> > > >
> > > >     @Override
> > > > @@ -56,11 +61,5 @@
> > > >     protected String getAssemblySuffix()
> > > >     {
> > > >         return "-test";
> > > > -    }
> > > > -
> > > > -    @Override
> > > > -    protected boolean isTestCompile()
> > > > -    {
> > > > -        return true;
> > > >     }
> > > >  }
> > > >
> > > >
> > > >
> > >
> >
>

Re: svn commit: r608757 - in /incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler: AbstractCompilerMojo.java CompilerMojo.java TestCompilerMojo.java

Posted by Shane Isbell <sh...@gmail.com>.
On Jan 9, 2008 7:31 PM, Evan Worley <ev...@gmail.com> wrote:

> Right, the AbstractCompilerMojo was based on your CompilerMojo, with the
> unique bits pulled out to be specified by the concrete classes.  The
> setArtifactType was copied to the TestCompilerMojo, and hence appeared to
> be
> the same, but yes this needs to be fixed.  As for the set keyfile, that
> was
> directly from the CompilerMojo, so if it doesn't perform a check, then
> that's how I found it.
>
> Abstracting the CompilerMojo and the SourceProcessor was a first attempt
> to
> unify the duplicate work that was being performed, it still needs some
> work.  Please feel free to touch it up as you see fit, after all you wrote
> 90% of the code in there.


Okay I'm going to revert back the AbstractCompilerMojo. The primary job of
the abstract mojo is to set the CompilerConfig but since we have to pass up
a bunch of those configuration parameters from methods in the concrete class
to the abstract class, we don't gain anything. All the real work is handled
by the CSharpCompiler implementation anyway.

Also the AbstractSourceProcessorMojo uses the same excludes list but since
we are using a flat directory structure, we can't do this. The main compiler
needs to exclude the entire ./Test directory, while the test compiler needs
to include only those classes under the ./Test directory.

Shane


>
>
> Thanks for catching these,
> Evan
>
> On Jan 9, 2008 7:25 PM, Shane Isbell <sh...@gmail.com> wrote:
>
> > If the project type is say dotnet:exe, this code in the
> > AbstractCompilerMojo
> > is going to compile the test library also as a dotnet:exe, when it
> should
> > be
> > compiled to a library.
> >
> >        compilerConfig.setArtifactType(
> >            ArtifactType.valueOf( project.getPackaging().split( "[:]"
> > )[1].toUpperCase() ) );
> >
> > Also
> >  keyInfo.setKeyFileUri( keyfile.toURI() );
> >
> > needlessly signs the test artifact.
> >
> > Specifying a single target language within the AbstractCompilerMojo a
> > makes
> > it impossible to write the unit tests and main source files in different
> > languages.
> > Shane
> > On Jan 3, 2008 10:38 PM, <ew...@apache.org> wrote:
> >
> > > Author: eworley
> > > Date: Thu Jan  3 22:38:03 2008
> > > New Revision: 608757
> > >
> > > URL: http://svn.apache.org/viewvc?rev=608757&view=rev
> > > Log:
> > > Cleaned up the abstract compiler mojo, base classes now passing
> > > configuration up, this is more flexible and removes the need for
> > extraneous
> > > methods to control config
> > >
> > > Modified:
> > >
> > >
> >
>  incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/AbstractCompilerMojo.java
> > >
> > >
> >
>  incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/CompilerMojo.java
> > >
> > >
> >
>  incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/TestCompilerMojo.java
> > >
> > > Modified:
> > >
> >
> incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/AbstractCompilerMojo.java
> > > URL:
> > >
> >
> http://svn.apache.org/viewvc/incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/AbstractCompilerMojo.java?rev=608757&r1=608756&r2=608757&view=diff
> > >
> > >
> >
> ==============================================================================
> > > ---
> > >
> >
> incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/AbstractCompilerMojo.java
> > > (original)
> > > +++
> > >
> >
> incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/AbstractCompilerMojo.java
> > > Thu Jan  3 22:38:03 2008
> > > @@ -2,8 +2,6 @@
> > >
> > >  import java.io.File;
> > >  import java.io.IOException;
> > > -import java.net.URI;
> > > -import java.net.URISyntaxException;
> > >
> > >  import org.apache.maven.dotnet.ArtifactType;
> > >  import org.apache.maven.dotnet.InitializationException;
> > > @@ -84,7 +82,9 @@
> > >      *
> > >      * @throws MojoExecutionException
> > >      */
> > > -    protected File compile() throws MojoExecutionException {
> > > +    protected File compile( DotnetCompilerConfig compilerConfig )
> > > +        throws MojoExecutionException
> > > +    {
> > >         String outputDir = project.getBuild().getDirectory();
> > >         File sourceDir =
> > >             new File( outputDir, getSourceDirectoryName());
> > > @@ -105,7 +105,7 @@
> > >         }
> > >
> > >         getLog().info( ".NET Vendor: " + vendor );
> > > -        DotnetCompilerConfig compilerConfig =
> > > DotnetCompilerConfig.Factory.createDefaultCompilerConfig();
> > > +
> > >         compilerConfig.setArtifactType(
> > >             ArtifactType.valueOf( project.getPackaging().split( "[:]"
> > > )[1].toUpperCase() ) );
> > >         compilerConfig.setCompilerPlatformVersion(
> > > DotnetCompilerPlatformVersion.valueFromVersion( frameworkVersion ) );
> > > @@ -113,14 +113,7 @@
> > >         KeyInfo keyInfo = KeyInfo.Factory.createDefaultKeyInfo();
> > >         if ( keyfile != null )
> > >         {
> > > -//            try
> > > -//            {
> > > -                keyInfo.setKeyFileUri( keyfile.toURI() );
> > > -//            }
> > > -//            catch ( URISyntaxException e )
> > > -//            {
> > > -//                throw new MojoExecutionException( e.getMessage() );
> > > -//            }
> > > +            keyInfo.setKeyFileUri( keyfile.toURI() );
> > >         }
> > >
> > >         keyInfo.setKeyContainerName( keycontainer );
> > > @@ -128,7 +121,6 @@
> > >
> > >         compilerConfig.setLocalRepository( localRepository );
> > >         compilerConfig.setProgrammingLanguage(
> > ProgrammingLanguage.C_SHARP);
> > > -        compilerConfig.setTestCompile( isTestCompile() );
> > >         compilerConfig.setCompilerSourceDirectory( sourceDir );
> > >         compilerConfig.setVendor( vendor );
> > >         compilerConfig.setTargetDirectory( new File( outputDir ) );
> > > @@ -173,14 +165,5 @@
> > >      */
> > >     protected String getAssemblySuffix() {
> > >         return "";
> > > -    }
> > > -
> > > -    /**
> > > -     * Sub classes can override this to configure the compiler
> > > -     * for test compilation
> > > -     * @return <code>boolean</code> true if test compile, else false
> > > -     */
> > > -    protected boolean isTestCompile() {
> > > -        return false;
> > >     }
> > >  }
> > >
> > > Modified:
> > >
> >
> incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/CompilerMojo.java
> > > URL:
> > >
> >
> http://svn.apache.org/viewvc/incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/CompilerMojo.java?rev=608757&r1=608756&r2=608757&view=diff
> > >
> > >
> >
> ==============================================================================
> > > ---
> > >
> >
> incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/CompilerMojo.java
> > > (original)
> > > +++
> > >
> >
> incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/CompilerMojo.java
> > > Thu Jan  3 22:38:03 2008
> > > @@ -18,7 +18,10 @@
> > >  */
> > >  package org.apache.maven.dotnet.plugin.compiler;
> > >
> > > +import java.io.File;
> > > +
> > >  import org.apache.maven.dotnet.BuildDirectories;
> > > +import org.apache.maven.dotnet.compiler.DotnetCompilerConfig;
> > >  import org.apache.maven.plugin.MojoExecutionException;
> > >  import org.apache.maven.plugin.MojoFailureException;
> > >
> > > @@ -42,6 +45,9 @@
> > >     public void execute()
> > >         throws MojoExecutionException, MojoFailureException
> > >     {
> > > -        project.getArtifact().setFile( compile() );
> > > +        DotnetCompilerConfig compilerConfig =
> > > DotnetCompilerConfig.Factory.createDefaultCompilerConfig();
> > > +
> > > +        File assembly = compile( compilerConfig );
> > > +        project.getArtifact().setFile( assembly );
> > >     }
> > >  }
> > >
> > > Modified:
> > >
> >
> incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/TestCompilerMojo.java
> > > URL:
> > >
> >
> http://svn.apache.org/viewvc/incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/TestCompilerMojo.java?rev=608757&r1=608756&r2=608757&view=diff
> > >
> > >
> >
> ==============================================================================
> > > ---
> > >
> >
> incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/TestCompilerMojo.java
> > > (original)
> > > +++
> > >
> >
> incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/TestCompilerMojo.java
> > > Thu Jan  3 22:38:03 2008
> > > @@ -19,6 +19,7 @@
> > >  package org.apache.maven.dotnet.plugin.compiler;
> > >
> > >  import org.apache.maven.dotnet.BuildDirectories;
> > > +import org.apache.maven.dotnet.compiler.DotnetCompilerConfig;
> > >  import org.apache.maven.plugin.MojoExecutionException;
> > >  import org.apache.maven.plugin.MojoFailureException;
> > >
> > > @@ -43,7 +44,11 @@
> > >             return;
> > >         }
> > >
> > > -        compile();
> > > +        DotnetCompilerConfig compilerConfig =
> > > DotnetCompilerConfig.Factory.createDefaultCompilerConfig();
> > > +
> > > +        compilerConfig.setTestCompile( true );
> > > +
> > > +        compile( compilerConfig );
> > >     }
> > >
> > >     @Override
> > > @@ -56,11 +61,5 @@
> > >     protected String getAssemblySuffix()
> > >     {
> > >         return "-test";
> > > -    }
> > > -
> > > -    @Override
> > > -    protected boolean isTestCompile()
> > > -    {
> > > -        return true;
> > >     }
> > >  }
> > >
> > >
> > >
> >
>

Re: svn commit: r608757 - in /incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler: AbstractCompilerMojo.java CompilerMojo.java TestCompilerMojo.java

Posted by Evan Worley <ev...@gmail.com>.
Right, the AbstractCompilerMojo was based on your CompilerMojo, with the
unique bits pulled out to be specified by the concrete classes.  The
setArtifactType was copied to the TestCompilerMojo, and hence appeared to be
the same, but yes this needs to be fixed.  As for the set keyfile, that was
directly from the CompilerMojo, so if it doesn't perform a check, then
that's how I found it.

Abstracting the CompilerMojo and the SourceProcessor was a first attempt to
unify the duplicate work that was being performed, it still needs some
work.  Please feel free to touch it up as you see fit, after all you wrote
90% of the code in there.

Thanks for catching these,
Evan

On Jan 9, 2008 7:25 PM, Shane Isbell <sh...@gmail.com> wrote:

> If the project type is say dotnet:exe, this code in the
> AbstractCompilerMojo
> is going to compile the test library also as a dotnet:exe, when it should
> be
> compiled to a library.
>
>        compilerConfig.setArtifactType(
>            ArtifactType.valueOf( project.getPackaging().split( "[:]"
> )[1].toUpperCase() ) );
>
> Also
>  keyInfo.setKeyFileUri( keyfile.toURI() );
>
> needlessly signs the test artifact.
>
> Specifying a single target language within the AbstractCompilerMojo a
> makes
> it impossible to write the unit tests and main source files in different
> languages.
> Shane
> On Jan 3, 2008 10:38 PM, <ew...@apache.org> wrote:
>
> > Author: eworley
> > Date: Thu Jan  3 22:38:03 2008
> > New Revision: 608757
> >
> > URL: http://svn.apache.org/viewvc?rev=608757&view=rev
> > Log:
> > Cleaned up the abstract compiler mojo, base classes now passing
> > configuration up, this is more flexible and removes the need for
> extraneous
> > methods to control config
> >
> > Modified:
> >
> >
>  incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/AbstractCompilerMojo.java
> >
> >
>  incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/CompilerMojo.java
> >
> >
>  incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/TestCompilerMojo.java
> >
> > Modified:
> >
> incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/AbstractCompilerMojo.java
> > URL:
> >
> http://svn.apache.org/viewvc/incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/AbstractCompilerMojo.java?rev=608757&r1=608756&r2=608757&view=diff
> >
> >
> ==============================================================================
> > ---
> >
> incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/AbstractCompilerMojo.java
> > (original)
> > +++
> >
> incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/AbstractCompilerMojo.java
> > Thu Jan  3 22:38:03 2008
> > @@ -2,8 +2,6 @@
> >
> >  import java.io.File;
> >  import java.io.IOException;
> > -import java.net.URI;
> > -import java.net.URISyntaxException;
> >
> >  import org.apache.maven.dotnet.ArtifactType;
> >  import org.apache.maven.dotnet.InitializationException;
> > @@ -84,7 +82,9 @@
> >      *
> >      * @throws MojoExecutionException
> >      */
> > -    protected File compile() throws MojoExecutionException {
> > +    protected File compile( DotnetCompilerConfig compilerConfig )
> > +        throws MojoExecutionException
> > +    {
> >         String outputDir = project.getBuild().getDirectory();
> >         File sourceDir =
> >             new File( outputDir, getSourceDirectoryName());
> > @@ -105,7 +105,7 @@
> >         }
> >
> >         getLog().info( ".NET Vendor: " + vendor );
> > -        DotnetCompilerConfig compilerConfig =
> > DotnetCompilerConfig.Factory.createDefaultCompilerConfig();
> > +
> >         compilerConfig.setArtifactType(
> >             ArtifactType.valueOf( project.getPackaging().split( "[:]"
> > )[1].toUpperCase() ) );
> >         compilerConfig.setCompilerPlatformVersion(
> > DotnetCompilerPlatformVersion.valueFromVersion( frameworkVersion ) );
> > @@ -113,14 +113,7 @@
> >         KeyInfo keyInfo = KeyInfo.Factory.createDefaultKeyInfo();
> >         if ( keyfile != null )
> >         {
> > -//            try
> > -//            {
> > -                keyInfo.setKeyFileUri( keyfile.toURI() );
> > -//            }
> > -//            catch ( URISyntaxException e )
> > -//            {
> > -//                throw new MojoExecutionException( e.getMessage() );
> > -//            }
> > +            keyInfo.setKeyFileUri( keyfile.toURI() );
> >         }
> >
> >         keyInfo.setKeyContainerName( keycontainer );
> > @@ -128,7 +121,6 @@
> >
> >         compilerConfig.setLocalRepository( localRepository );
> >         compilerConfig.setProgrammingLanguage(
> ProgrammingLanguage.C_SHARP);
> > -        compilerConfig.setTestCompile( isTestCompile() );
> >         compilerConfig.setCompilerSourceDirectory( sourceDir );
> >         compilerConfig.setVendor( vendor );
> >         compilerConfig.setTargetDirectory( new File( outputDir ) );
> > @@ -173,14 +165,5 @@
> >      */
> >     protected String getAssemblySuffix() {
> >         return "";
> > -    }
> > -
> > -    /**
> > -     * Sub classes can override this to configure the compiler
> > -     * for test compilation
> > -     * @return <code>boolean</code> true if test compile, else false
> > -     */
> > -    protected boolean isTestCompile() {
> > -        return false;
> >     }
> >  }
> >
> > Modified:
> >
> incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/CompilerMojo.java
> > URL:
> >
> http://svn.apache.org/viewvc/incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/CompilerMojo.java?rev=608757&r1=608756&r2=608757&view=diff
> >
> >
> ==============================================================================
> > ---
> >
> incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/CompilerMojo.java
> > (original)
> > +++
> >
> incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/CompilerMojo.java
> > Thu Jan  3 22:38:03 2008
> > @@ -18,7 +18,10 @@
> >  */
> >  package org.apache.maven.dotnet.plugin.compiler;
> >
> > +import java.io.File;
> > +
> >  import org.apache.maven.dotnet.BuildDirectories;
> > +import org.apache.maven.dotnet.compiler.DotnetCompilerConfig;
> >  import org.apache.maven.plugin.MojoExecutionException;
> >  import org.apache.maven.plugin.MojoFailureException;
> >
> > @@ -42,6 +45,9 @@
> >     public void execute()
> >         throws MojoExecutionException, MojoFailureException
> >     {
> > -        project.getArtifact().setFile( compile() );
> > +        DotnetCompilerConfig compilerConfig =
> > DotnetCompilerConfig.Factory.createDefaultCompilerConfig();
> > +
> > +        File assembly = compile( compilerConfig );
> > +        project.getArtifact().setFile( assembly );
> >     }
> >  }
> >
> > Modified:
> >
> incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/TestCompilerMojo.java
> > URL:
> >
> http://svn.apache.org/viewvc/incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/TestCompilerMojo.java?rev=608757&r1=608756&r2=608757&view=diff
> >
> >
> ==============================================================================
> > ---
> >
> incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/TestCompilerMojo.java
> > (original)
> > +++
> >
> incubator/nmaven/trunk/plugins/maven-compiler-plugin/src/main/java/org/apache/maven/dotnet/plugin/compiler/TestCompilerMojo.java
> > Thu Jan  3 22:38:03 2008
> > @@ -19,6 +19,7 @@
> >  package org.apache.maven.dotnet.plugin.compiler;
> >
> >  import org.apache.maven.dotnet.BuildDirectories;
> > +import org.apache.maven.dotnet.compiler.DotnetCompilerConfig;
> >  import org.apache.maven.plugin.MojoExecutionException;
> >  import org.apache.maven.plugin.MojoFailureException;
> >
> > @@ -43,7 +44,11 @@
> >             return;
> >         }
> >
> > -        compile();
> > +        DotnetCompilerConfig compilerConfig =
> > DotnetCompilerConfig.Factory.createDefaultCompilerConfig();
> > +
> > +        compilerConfig.setTestCompile( true );
> > +
> > +        compile( compilerConfig );
> >     }
> >
> >     @Override
> > @@ -56,11 +61,5 @@
> >     protected String getAssemblySuffix()
> >     {
> >         return "-test";
> > -    }
> > -
> > -    @Override
> > -    protected boolean isTestCompile()
> > -    {
> > -        return true;
> >     }
> >  }
> >
> >
> >
>