You are viewing a plain text version of this content. The canonical link for it is here.
Posted to m2-dev@maven.apache.org by Maczka Michal <mi...@imtf.ch> on 2005/03/09 09:57:14 UTC

RE: cvs commit: maven-components/maven-plugins/maven-war-plugin/s rc/main/java/org/apache/maven/plugin/war WarMojo.java


> -----Original Message-----
> From: evenisse@apache.org [mailto:evenisse@apache.org]
> Sent: Wednesday, March 09, 2005 7:46 AM
> To: maven-components-cvs@apache.org
> Subject: cvs commit:
> maven-components/maven-plugins/maven-war-plugin/src/main/java/
> org/apache
> /maven/plugin/war WarMojo.java
> 
> 
> evenisse    2005/03/08 22:45:33
> 
>   Modified:    maven-core-it/it0016 pom.xml
>                
> maven-plugins/maven-war-plugin/src/main/java/org/apache/maven/
> plugin/war
>                         WarMojo.java
>   Log:
>   Add dependencies in war and add support of scope deps
>   
>   Revision  Changes    Path
>   1.2       +13 -0     maven-components/maven-core-it/it0016/pom.xml
>   
>   Index: pom.xml
>   ===================================================================
>   RCS file: /home/cvs/maven-components/maven-core-it/it0016/pom.xml,v
>   retrieving revision 1.1
>   retrieving revision 1.2
>   diff -u -r1.1 -r1.2
>   --- pom.xml	3 Mar 2005 09:08:47 -0000	1.1
>   +++ pom.xml	9 Mar 2005 06:45:33 -0000	1.2
>   @@ -4,4 +4,17 @@
>      <artifactId>maven-core-it0016</artifactId>
>      <type>war</type>
>      <version>1.0</version>
>   +  <dependencies>
>   +    <dependency>
>   +      <groupId>commons-logging</groupId>
>   +      <artifactId>commons-logging</artifactId>
>   +      <version>1.0.3</version>
>   +      <scope>runtime</scope>
>   +    </dependency>
>   +    <dependency>
>   +      <groupId>servletapi</groupId>
>   +      <artifactId>servletapi</artifactId>
>   +      <version>2.3</version>
>   +    </dependency>
>   +  </dependencies>
>    </project>
>   
>   
>   
>   1.6       +7 -18     
> maven-components/maven-plugins/maven-war-plugin/src/main/java/
> org/apache/maven/plugin/war/WarMojo.java
>   
>   Index: WarMojo.java
>   ===================================================================
>   RCS file: 
> /home/cvs/maven-components/maven-plugins/maven-war-plugin/src/
main/java/org/apache/maven/plugin/war/WarMojo.jav> a,v
>   retrieving revision 1.5
>   retrieving revision 1.6
>   diff -u -r1.5 -r1.6
>   --- WarMojo.java	8 Mar 2005 06:39:50 -0000	1.5
>   +++ WarMojo.java	9 Mar 2005 06:45:33 -0000	1.6
>   @@ -23,7 +23,6 @@
>    
>    import org.apache.maven.archiver.MavenArchiver;
>    import org.apache.maven.artifact.Artifact;
>   -import org.apache.maven.artifact.repository.ArtifactRepository;
>    import org.apache.maven.plugin.AbstractPlugin;
>    import org.apache.maven.plugin.PluginExecutionRequest;
>    import org.apache.maven.plugin.PluginExecutionResponse;
>   @@ -144,12 +143,6 @@
>     *  validator=""
>     *  expression="#project.build.directory"
>     *  description=""
>   - * @parameter name="localRepository"
>   - *  type="org.apache.maven.artifact.repository.ArtifactRepository"
>   - *  required="true"
>   - *  validator=""
>   - *  expression="#localRepository"
>   - *  description=""
>     * @parameter
>     *  name="project"
>     *  type="org.apache.maven.project.MavenProject"
>   @@ -172,8 +165,6 @@
>    
>        private MavenProject project;
>    
>   -    private ArtifactRepository localRepository;
>   -
>        private File classesDirectory;
>    
>        private String outputDirectory;
>   @@ -211,13 +202,12 @@
>        }
>    
>        /**
>   -     * @todo properties 'war.bundle' and 'war.target.path'
>   -     * @todo copy classes to classes webapp directory
>   +     * @todo properties 'war.target.path'
>         */
>        public void buildWebapp( MavenProject project )
>            throws IOException
>        {
>   -        request.getLog().info( "Assembling webapp " + 
> project.getArtifactId() );
>   +        request.getLog().info( "Assembling webapp " + 
> project.getArtifactId() + " in " + 
> webappDirectory.getAbsolutePath() );
>    
>            File libDirectory = new File( webappDirectory, 
> WEB_INF + "/lib" );
>    
>   @@ -235,13 +225,14 @@
>            for ( Iterator iter = artifacts.iterator(); 
> iter.hasNext(); )
>            {
>                Artifact artifact = (Artifact) iter.next();
>   -            if ( "jar".equals( artifact.getType() ) )
>   +
>   +            if ( "jar".equals( artifact.getType() ) && 
> Artifact.SCOPE_RUNTIME.equals( artifact.getScope() ) )
>                {
>   -                FileUtils.copyFileToDirectory( new File( 
> localRepository.getBasedir(), artifact.toString() ) , libDirectory );
>   +                FileUtils.copyFileToDirectory( 
> artifact.getFile() , libDirectory );
>                }
>                if ( "tld".equals( artifact.getType() ) )
>                {
>   -                FileUtils.copyFileToDirectory( new File( 
> localRepository.getBasedir(), artifact.toString() ) , tldDirectory );
>   +                FileUtils.copyFileToDirectory( 
> artifact.getFile() , tldDirectory );
>                }
>            }
>        }
>   @@ -318,8 +309,6 @@
>    
>            project = (MavenProject) request.getParameter( "project" );
>    
>   -        localRepository = (ArtifactRepository) 
> request.getParameter( "localRepository" );
>   -
>            classesDirectory = new File( (String) 
> request.getParameter( "classesDirectory" ) );
>    
>            outputDirectory = (String) request.getParameter( 
> "outputDirectory" );
>   
>   
>   


Hmm. Don't you want to add to war everything except test only and
compile-time only dependecies?
So for example dependecies with no scope attribute given (if I understand
they should be "globally" visible in all 
list of classpath elements) will be bundled as well.


Shouldn't it be rather something like:


  +  <dependencies>
>   +    <dependency>
>   +      <groupId>commons-logging</groupId>
>   +      <artifactId>commons-logging</artifactId>
>   +      <version>1.0.3</version>
>   +    </dependency>
>   +    <dependency>
>   +      <groupId>servletapi</groupId>
>   +      <artifactId>servletapi</artifactId>
>   +      <version>2.3</version>
>   +      <scope>compile</scope>
>   +    </dependency>
>   +  </dependencies>

the problem is that servlet-api (runtime dependency) could be also a test
dependency 
(for example there are some test frameworks which are emulating servlet
containers), 
so probably it should be possible to limit the scope of a dependency to more
then one of the existing scopes
(e.g. to express that the scope of servletapi is: compile & test).

Michal

RE: cvs commit: maven-components/maven-plugins/maven-war-plugin/s rc/main/java/org/apache/maven/plugin/war WarMojo.java

Posted by Emmanuel Venisse <em...@venisse.net>.
Maczka Michal said:
>
>
>> -----Original Message-----
>> From: evenisse@apache.org [mailto:evenisse@apache.org]
>> Sent: Wednesday, March 09, 2005 7:46 AM
>> To: maven-components-cvs@apache.org
>> Subject: cvs commit:
>> maven-components/maven-plugins/maven-war-plugin/src/main/java/
>> org/apache
>> /maven/plugin/war WarMojo.java
>>
>>
>> evenisse    2005/03/08 22:45:33
>>
>>   Modified:    maven-core-it/it0016 pom.xml
>>
>> maven-plugins/maven-war-plugin/src/main/java/org/apache/maven/
>> plugin/war
>>                         WarMojo.java
>>   Log:
>>   Add dependencies in war and add support of scope deps
>>
>>   Revision  Changes    Path
>>   1.2       +13 -0     maven-components/maven-core-it/it0016/pom.xml
>>
>>   Index: pom.xml
>>   ===================================================================
>> RCS file: /home/cvs/maven-components/maven-core-it/it0016/pom.xml,v
>> retrieving revision 1.1
>>   retrieving revision 1.2
>>   diff -u -r1.1 -r1.2
>>   --- pom.xml	3 Mar 2005 09:08:47 -0000	1.1
>>   +++ pom.xml	9 Mar 2005 06:45:33 -0000	1.2
>>   @@ -4,4 +4,17 @@
>>      <artifactId>maven-core-it0016</artifactId>
>>      <type>war</type>
>>      <version>1.0</version>
>>   +  <dependencies>
>>   +    <dependency>
>>   +      <groupId>commons-logging</groupId>
>>   +      <artifactId>commons-logging</artifactId>
>>   +      <version>1.0.3</version>
>>   +      <scope>runtime</scope>
>>   +    </dependency>
>>   +    <dependency>
>>   +      <groupId>servletapi</groupId>
>>   +      <artifactId>servletapi</artifactId>
>>   +      <version>2.3</version>
>>   +    </dependency>
>>   +  </dependencies>
>>    </project>
>>
>>
>>
>>   1.6       +7 -18
>> maven-components/maven-plugins/maven-war-plugin/src/main/java/
>> org/apache/maven/plugin/war/WarMojo.java
>>
>>   Index: WarMojo.java
>>   ===================================================================
>> RCS file:
>> /home/cvs/maven-components/maven-plugins/maven-war-plugin/src/
> main/java/org/apache/maven/plugin/war/WarMojo.jav> a,v
>>   retrieving revision 1.5
>>   retrieving revision 1.6
>>   diff -u -r1.5 -r1.6
>>   --- WarMojo.java	8 Mar 2005 06:39:50 -0000	1.5
>>   +++ WarMojo.java	9 Mar 2005 06:45:33 -0000	1.6
>>   @@ -23,7 +23,6 @@
>>
>>    import org.apache.maven.archiver.MavenArchiver;
>>    import org.apache.maven.artifact.Artifact;
>>   -import org.apache.maven.artifact.repository.ArtifactRepository;
>>    import org.apache.maven.plugin.AbstractPlugin;
>>    import org.apache.maven.plugin.PluginExecutionRequest;
>>    import org.apache.maven.plugin.PluginExecutionResponse;
>>   @@ -144,12 +143,6 @@
>>     *  validator=""
>>     *  expression="#project.build.directory"
>>     *  description=""
>>   - * @parameter name="localRepository"
>>   - *  type="org.apache.maven.artifact.repository.ArtifactRepository"
>> - *  required="true"
>>   - *  validator=""
>>   - *  expression="#localRepository"
>>   - *  description=""
>>     * @parameter
>>     *  name="project"
>>     *  type="org.apache.maven.project.MavenProject"
>>   @@ -172,8 +165,6 @@
>>
>>        private MavenProject project;
>>
>>   -    private ArtifactRepository localRepository;
>>   -
>>        private File classesDirectory;
>>
>>        private String outputDirectory;
>>   @@ -211,13 +202,12 @@
>>        }
>>
>>        /**
>>   -     * @todo properties 'war.bundle' and 'war.target.path'
>>   -     * @todo copy classes to classes webapp directory
>>   +     * @todo properties 'war.target.path'
>>         */
>>        public void buildWebapp( MavenProject project )
>>            throws IOException
>>        {
>>   -        request.getLog().info( "Assembling webapp " +
>> project.getArtifactId() );
>>   +        request.getLog().info( "Assembling webapp " +
>> project.getArtifactId() + " in " +
>> webappDirectory.getAbsolutePath() );
>>
>>            File libDirectory = new File( webappDirectory,
>> WEB_INF + "/lib" );
>>
>>   @@ -235,13 +225,14 @@
>>            for ( Iterator iter = artifacts.iterator();
>> iter.hasNext(); )
>>            {
>>                Artifact artifact = (Artifact) iter.next();
>>   -            if ( "jar".equals( artifact.getType() ) )
>>   +
>>   +            if ( "jar".equals( artifact.getType() ) &&
>> Artifact.SCOPE_RUNTIME.equals( artifact.getScope() ) )
>>                {
>>   -                FileUtils.copyFileToDirectory( new File(
>> localRepository.getBasedir(), artifact.toString() ) , libDirectory );
>>   +                FileUtils.copyFileToDirectory(
>> artifact.getFile() , libDirectory );
>>                }
>>                if ( "tld".equals( artifact.getType() ) )
>>                {
>>   -                FileUtils.copyFileToDirectory( new File(
>> localRepository.getBasedir(), artifact.toString() ) , tldDirectory );
>>   +                FileUtils.copyFileToDirectory(
>> artifact.getFile() , tldDirectory );
>>                }
>>            }
>>        }
>>   @@ -318,8 +309,6 @@
>>
>>            project = (MavenProject) request.getParameter( "project" );
>>
>>   -        localRepository = (ArtifactRepository)
>> request.getParameter( "localRepository" );
>>   -
>>            classesDirectory = new File( (String)
>> request.getParameter( "classesDirectory" ) );
>>
>>            outputDirectory = (String) request.getParameter(
>> "outputDirectory" );
>>
>>
>>
>
>
> Hmm. Don't you want to add to war everything except test only and
> compile-time only dependecies?
> So for example dependecies with no scope attribute given (if I
> understand they should be "globally" visible in all
> list of classpath elements) will be bundled as well.
>

A dependency with no scope is a dependency with compile scope.

>
> Shouldn't it be rather something like:
>
>
>   +  <dependencies>
>>   +    <dependency>
>>   +      <groupId>commons-logging</groupId>
>>   +      <artifactId>commons-logging</artifactId>
>>   +      <version>1.0.3</version>
>>   +    </dependency>
>>   +    <dependency>
>>   +      <groupId>servletapi</groupId>
>>   +      <artifactId>servletapi</artifactId>
>>   +      <version>2.3</version>
>>   +      <scope>compile</scope>
>>   +    </dependency>
>>   +  </dependencies>
>
> the problem is that servlet-api (runtime dependency) could be also a
> test dependency
> (for example there are some test frameworks which are emulating servlet
> containers),
> so probably it should be possible to limit the scope of a dependency to
> more then one of the existing scopes
> (e.g. to express that the scope of servletapi is: compile & test).

The test phase includes all dependencies with scope compile, test and
runtime.
See at
http://cvs.apache.org/viewcvs.cgi/maven-components/maven-core/src/main/java/org/apache/maven/project/MavenProject.java?rev=1.24&view=markup

in method getTestClasspathElements()

Emmanuel