[ 
https://issues.apache.org/jira/browse/IVY-1511?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Carsten Rohde updated IVY-1511:
-------------------------------
    Description: 
Given: 
************
- An ivy module that depends on a module built with Maven. 
- The Maven module was built using the maven-javadoc-plugin (inherited from its 
parent) but with "maven.javadoc.skip" set to "true", thus generating no 
-javadoc artifact.
- In general, the resolution of maven artifacts works flawlessly using the 
ibiblio resolver (m2compatible=true)

Problem:
************
- Resolution fails because ivy assumes that the -javadoc artifact is present 
which is not the case

Workaround:
************
- Exclude artifacts with -javadoc classifier

Suggestions:
************
- Include publications for maven artifacts with classifier javadoc (sources...) 
only if those files are actually present on the repository, or 

Examples:
***********

Ivy-Dependency Declaration:
<dependency org="my.company" name="my-maven-module" rev="1.0.0-SNAPSHOT"  
conf="myconf"/>

Effective Maven Pom:
<?xml version="1.0"?> 
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd"; 
xmlns="http://maven.apache.org/POM/4.0.0"; 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";> 
  <modelVersion>4.0.0</modelVersion> 

  <groupId>my.company</groupId> 
  <artifactId>my-maven-module</artifactId> 
  <version>1.0.0-SNAPSHOT</version>
  
  <properties> 
    <maven.javadoc.skip>true</maven.javadoc.skip> 
  </properties> 

  <build> 
    <plugins> 
      <plugin> 
        <artifactId>maven-javadoc-plugin</artifactId> 
        <version>2.10</version> 
        <executions> 
          <execution> 
            <id>attach-javadocs</id> 
            <goals> 
              <goal>jar</goal> 
            </goals> 
          </execution> 
        </executions> 
      </plugin> 
      <plugin> 
        <artifactId>maven-source-plugin</artifactId> 
        <version>2.2.1</version> 
        <executions> 
          <execution> 
            <id>attach-sources</id> 
            <goals> 
              <goal>jar-no-fork</goal> 
            </goals> 
          </execution> 
        </executions> 
      </plugin> 
    </plugins> 
  </build> 
</project>

Generated Ivy File derived from the Maven Pom above:
[...]
        <configurations>
                <conf name="default" visibility="public" description="runtime 
dependencies and master artifact can be used with this conf" 
extends="runtime,master"/>
                <conf name="master" visibility="public" description="contains 
only the artifact published by this module itself, with no transitive 
dependencies"/>
                <conf name="compile" visibility="public" description="this is 
the default scope, used if none is specified. Compile dependencies are 
available in all classpaths."/>
                <conf name="provided" visibility="public" description="this is 
much like compile, but indicates you expect the JDK or a container to provide 
it. It is only available on the compilation classpath, and is not transitive."/>
                <conf name="runtime" visibility="public" description="this 
scope indicates that the dependency is not required for compilation, but is for 
execution. It is in the runtime and test classpaths, but not the compile 
classpath." extends="compile"/>
                <conf name="test" visibility="private" description="this scope 
indicates that the dependency is not required for normal use of the 
application, and is only available for the test compilation and execution 
phases." extends="runtime"/>
                <conf name="system" visibility="public" description="this scope 
is similar to provided except that you have to provide the JAR which contains 
it explicitly. The artifact is always available and is not looked up in a 
repository."/>
                <conf name="sources" visibility="public" description="this 
configuration contains the source artifact of this module, if any."/>
                <conf name="javadoc" visibility="public" description="this 
configuration contains the javadoc artifact of this module, if any."/>
                <conf name="optional" visibility="public" description="contains 
all optional dependencies"/>
        </configurations>
        <publications>
                <artifact name="my-maven-module" type="jar" ext="jar" 
conf="master"/>
                <artifact name="my-maven-module" type="source" ext="jar" 
conf="sources" m:classifier="sources"/>
                <artifact name="my-maven-module" type="javadoc" ext="jar" 
conf="javadoc" m:classifier="javadoc"/>
        </publications>
[...]


  was:
Given: 
************
- An ivy module that depends on a module built with Maven. 
- The Maven module was built using the maven-javadoc-plugin (inherited from its 
parent) but with "maven.javadoc.skip" set to "true", thus generating no 
-javadoc artifact.
- In general, the resolution of maven artifacts works flawlessly using the 
ibiblio resolver (m2compatible=true)

Problem:
************
- Resolution fails because ivy assumes that the -javadoc artifact is present 
which is not the case

Workaround:
************
- Exclude artifacts with -javadoc classifier

Suggestions:
************
- Include publications for maven artifacts with classifier javadoc (sources...) 
only if those files are actually present on the repository, or 

Examples:
***********

Ivy-Dependency Declaration:
<dependency org="my.company" name="my-maven-module" rev="1.0.0-SNAPSHOT"  
conf="myconf"/>

Effective Maven Pom:
<?xml version="1.0"?> 
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd"; 
xmlns="http://maven.apache.org/POM/4.0.0"; 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";> 
  <modelVersion>4.0.0</modelVersion> 

  <groupId>my.company</groupId> 
  <artifactId>my-maven-module</artifactId> 
  <version>1.0.0-SNAPSHOT</version>
  
  <properties> 
    <maven.javadoc.skip>true</maven.javadoc.skip> 
  </properties> 

  <build> 
    <plugins> 
      <plugin> 
        <artifactId>maven-javadoc-plugin</artifactId> 
        <version>2.10</version> 
        <executions> 
          <execution> 
            <id>attach-javadocs</id> 
            <goals> 
              <goal>jar</goal> 
            </goals> 
          </execution> 
        </executions> 
      </plugin> 
      <plugin> 
        <artifactId>maven-source-plugin</artifactId> 
        <version>2.2.1</version> 
        <executions> 
          <execution> 
            <id>attach-sources</id> 
            <goals> 
              <goal>jar-no-fork</goal> 
            </goals> 
          </execution> 
        </executions> 
      </plugin> 
    </plugins> 
  </build> 
</project>

Generated Ivy File derived from the Maven Pom above:
[...]
        <configurations>
                <conf name="default" visibility="public" description="runtime 
dependencies and master artifact can be used with this conf" 
extends="runtime,master"/>
                <conf name="master" visibility="public" description="contains 
only the artifact published by this module itself, with no transitive 
dependencies"/>
                <conf name="compile" visibility="public" description="this is 
the default scope, used if none is specified. Compile dependencies are 
available in all classpaths."/>
                <conf name="provided" visibility="public" description="this is 
much like compile, but indicates you expect the JDK or a container to provide 
it. It is only available on the compilation classpath, and is not transitive."/>
                <conf name="runtime" visibility="public" description="this 
scope indicates that the dependency is not required for compilation, but is for 
execution. It is in the runtime and test classpaths, but not the compile 
classpath." extends="compile"/>
                <conf name="test" visibility="private" description="this scope 
indicates that the dependency is not required for normal use of the 
application, and is only available for the test compilation and execution 
phases." extends="runtime"/>
                <conf name="system" visibility="public" description="this scope 
is similar to provided except that you have to provide the JAR which contains 
it explicitly. The artifact is always available and is not looked up in a 
repository."/>
                <conf name="sources" visibility="public" description="this 
configuration contains the source artifact of this module, if any."/>
                <conf name="javadoc" visibility="public" description="this 
configuration contains the javadoc artifact of this module, if any."/>
                <conf name="optional" visibility="public" description="contains 
all optional dependencies"/>
        </configurations>
        <publications>
                <artifact name="my-maven-module" type="jar" ext="jar" 
conf="master"/>
                <artifact name="my-maven-module" type="source" ext="jar" 
conf="sources" m:classifier="sources"/>
                <artifact name="my-maven-module" type="javadoc" ext="jar" 
conf="javadoc" m:classifier="javadoc"/>
        </publications>
[...]

Workaround:
<exclude org="my.company" m:classifier="javadoc" />



> Ivy fails to resolve maven dependencies that were build with the 
> maven-javadoc-plugin and option "maven.javadoc.skip" 
> ----------------------------------------------------------------------------------------------------------------------
>
>                 Key: IVY-1511
>                 URL: https://issues.apache.org/jira/browse/IVY-1511
>             Project: Ivy
>          Issue Type: Bug
>          Components: Maven Compatibility
>    Affects Versions: 2.4.0
>         Environment: Ant + Ivy, Windows, Java 1.6.0 32 Bit, Maven2-Repository 
> (Artifactory)
>            Reporter: Carsten Rohde
>
> Given: 
> ************
> - An ivy module that depends on a module built with Maven. 
> - The Maven module was built using the maven-javadoc-plugin (inherited from 
> its parent) but with "maven.javadoc.skip" set to "true", thus generating no 
> -javadoc artifact.
> - In general, the resolution of maven artifacts works flawlessly using the 
> ibiblio resolver (m2compatible=true)
> Problem:
> ************
> - Resolution fails because ivy assumes that the -javadoc artifact is present 
> which is not the case
> Workaround:
> ************
> - Exclude artifacts with -javadoc classifier
> Suggestions:
> ************
> - Include publications for maven artifacts with classifier javadoc 
> (sources...) only if those files are actually present on the repository, or 
> Examples:
> ***********
> Ivy-Dependency Declaration:
> <dependency org="my.company" name="my-maven-module" rev="1.0.0-SNAPSHOT"  
> conf="myconf"/>
> Effective Maven Pom:
> <?xml version="1.0"?> 
> <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
> http://maven.apache.org/xsd/maven-4.0.0.xsd"; 
> xmlns="http://maven.apache.org/POM/4.0.0"; 
>     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";> 
>   <modelVersion>4.0.0</modelVersion> 
>   <groupId>my.company</groupId> 
>   <artifactId>my-maven-module</artifactId> 
>   <version>1.0.0-SNAPSHOT</version>
>   
>   <properties> 
>     <maven.javadoc.skip>true</maven.javadoc.skip> 
>   </properties> 
>   <build> 
>     <plugins> 
>       <plugin> 
>         <artifactId>maven-javadoc-plugin</artifactId> 
>         <version>2.10</version> 
>         <executions> 
>           <execution> 
>             <id>attach-javadocs</id> 
>             <goals> 
>               <goal>jar</goal> 
>             </goals> 
>           </execution> 
>         </executions> 
>       </plugin> 
>       <plugin> 
>         <artifactId>maven-source-plugin</artifactId> 
>         <version>2.2.1</version> 
>         <executions> 
>           <execution> 
>             <id>attach-sources</id> 
>             <goals> 
>               <goal>jar-no-fork</goal> 
>             </goals> 
>           </execution> 
>         </executions> 
>       </plugin> 
>     </plugins> 
>   </build> 
> </project>
> Generated Ivy File derived from the Maven Pom above:
> [...]
>       <configurations>
>               <conf name="default" visibility="public" description="runtime 
> dependencies and master artifact can be used with this conf" 
> extends="runtime,master"/>
>               <conf name="master" visibility="public" description="contains 
> only the artifact published by this module itself, with no transitive 
> dependencies"/>
>               <conf name="compile" visibility="public" description="this is 
> the default scope, used if none is specified. Compile dependencies are 
> available in all classpaths."/>
>               <conf name="provided" visibility="public" description="this is 
> much like compile, but indicates you expect the JDK or a container to provide 
> it. It is only available on the compilation classpath, and is not 
> transitive."/>
>               <conf name="runtime" visibility="public" description="this 
> scope indicates that the dependency is not required for compilation, but is 
> for execution. It is in the runtime and test classpaths, but not the compile 
> classpath." extends="compile"/>
>               <conf name="test" visibility="private" description="this scope 
> indicates that the dependency is not required for normal use of the 
> application, and is only available for the test compilation and execution 
> phases." extends="runtime"/>
>               <conf name="system" visibility="public" description="this scope 
> is similar to provided except that you have to provide the JAR which contains 
> it explicitly. The artifact is always available and is not looked up in a 
> repository."/>
>               <conf name="sources" visibility="public" description="this 
> configuration contains the source artifact of this module, if any."/>
>               <conf name="javadoc" visibility="public" description="this 
> configuration contains the javadoc artifact of this module, if any."/>
>               <conf name="optional" visibility="public" description="contains 
> all optional dependencies"/>
>       </configurations>
>       <publications>
>               <artifact name="my-maven-module" type="jar" ext="jar" 
> conf="master"/>
>               <artifact name="my-maven-module" type="source" ext="jar" 
> conf="sources" m:classifier="sources"/>
>               <artifact name="my-maven-module" type="javadoc" ext="jar" 
> conf="javadoc" m:classifier="javadoc"/>
>       </publications>
> [...]



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to