My point is that if returning classes is correct for a "jar" with no
classifier, then the correct thing to do for a "test-jar" is return
test-classes

On 9 December 2011 22:29, Benson Margulies <bimargul...@gmail.com> wrote:
> On Fri, Dec 9, 2011 at 2:22 PM, Stephen Connolly
> <stephen.alan.conno...@gmail.com> wrote:
>> it is left as an exercise to the reader to navigate the full fun of test
>> jars (classifier test type jar or no classifier and type test-jar or some
>> other wantonness (phone for once suggested suitable autocorrect fir
>> randomness))
>>
>> source jars could also be resolved too... but i would suggest not.
>
> Some more explication:
>
> Step 1: org.apache.maven.ReactorReader.findMatchingArtifact(MavenProject,
> Artifact) is trying to find a matching artifact, but did not take type
> or classifier into account at all. There is no reason for special
> handling of test-jar/tests here.
>
> Step 2: org.apache.maven.ReactorReader.find(MavenProject, Artifact) is
> implementing the fallback to 'classes' directories. For tests, it
> already checks both type and classifier to tell what's a test jar.
> However, when the artifact is not a test jar, the code went ahead and
> returned 'classes' for *anything*, regardless of type or classifier,
> if 'compile' was in the lifecycle.
>
>
>
>
>>
>> - Stephen
>>
>> ---
>> Sent from my Android phone, so random spelling mistakes, random nonsense
>> words and other nonsense are a direct result of using swype to type on the
>> screen
>> On 9 Dec 2011 19:19, "Stephen Connolly" <stephen.alan.conno...@gmail.com>
>> wrote:
>>
>>> refinement: test-jar should resolve to test-classes as a fallback
>>>
>>> - Stephen
>>>
>>> ---
>>> Sent from my Android phone, so random spelling mistakes, random nonsense
>>> words and other nonsense are a direct result of using swype to type on the
>>> screen
>>> On 9 Dec 2011 18:30, <bimargul...@apache.org> wrote:
>>>
>>>> Author: bimargulies
>>>> Date: Fri Dec  9 18:30:26 2011
>>>> New Revision: 1212564
>>>>
>>>> URL: http://svn.apache.org/viewvc?rev=1212564&view=rev
>>>> Log:
>>>> MNG-5214: Dependency resolution substitutes g:a:v:jar for
>>>> j:a:v:something-else when something-else isn't in the reacto
>>>>
>>>> o When Aether asks the ReactorReader for a file for an artifact, remember
>>>> to match type and classifier. And if all else
>>>>  fails, do not return target/classes if the desired artifact is not of
>>>> type 'jar'. Arguably, if type or classifier
>>>>  are non-default, then we should never return those default paths at all.
>>>> o Add 'dir' format to make it quicker to run a quick test. If everyone
>>>> hates this I'll revert it.
>>>>
>>>> Modified:
>>>>    maven/maven-3/trunk/apache-maven/src/main/assembly/bin.xml
>>>>
>>>>  maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/ReactorReader.java
>>>>
>>>> Modified: maven/maven-3/trunk/apache-maven/src/main/assembly/bin.xml
>>>> URL:
>>>> http://svn.apache.org/viewvc/maven/maven-3/trunk/apache-maven/src/main/assembly/bin.xml?rev=1212564&r1=1212563&r2=1212564&view=diff
>>>>
>>>> ==============================================================================
>>>> --- maven/maven-3/trunk/apache-maven/src/main/assembly/bin.xml (original)
>>>> +++ maven/maven-3/trunk/apache-maven/src/main/assembly/bin.xml Fri Dec  9
>>>> 18:30:26 2011
>>>> @@ -20,6 +20,7 @@ under the License.
>>>>  <assembly>
>>>>   <id>bin</id>
>>>>   <formats>
>>>> +    <format>dir</format>
>>>>     <format>zip</format>
>>>>     <format>tar.gz</format>
>>>>   </formats>
>>>>
>>>> Modified:
>>>> maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/ReactorReader.java
>>>> URL:
>>>> http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/ReactorReader.java?rev=1212564&r1=1212563&r2=1212564&view=diff
>>>>
>>>> ==============================================================================
>>>> ---
>>>> maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/ReactorReader.java
>>>> (original)
>>>> +++
>>>> maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/ReactorReader.java
>>>> Fri Dec  9 18:30:26 2011
>>>> @@ -85,9 +85,10 @@ class ReactorReader
>>>>         {
>>>>             return projectArtifact.getFile();
>>>>         }
>>>> -        else if ( !hasBeenPackaged( project ) )
>>>> +        else if ( !hasBeenPackaged( project ) )
>>>>         {
>>>>             // fallback to loose class files only if artifacts haven't
>>>> been packaged yet
>>>> +            // and only for plain old jars. Not war files, not ear
>>>> files, not anything else.
>>>>
>>>>             if ( isTestArtifact( artifact ) )
>>>>             {
>>>> @@ -98,7 +99,7 @@ class ReactorReader
>>>>             }
>>>>             else
>>>>             {
>>>> -                if ( project.hasLifecyclePhase( "compile" ) )
>>>> +                if ( project.hasLifecyclePhase( "compile" ) &&
>>>> artifact.getProperty( "type", "").equals( "jar" ) ) /* also reject non-""
>>>> classifier? */
>>>>                 {
>>>>                     return new File(
>>>> project.getBuild().getOutputDirectory() );
>>>>                 }
>>>> @@ -143,7 +144,9 @@ class ReactorReader
>>>>         {
>>>>             for ( org.apache.maven.artifact.Artifact attachedArtifact :
>>>> attachedArtifacts )
>>>>             {
>>>> -                if ( requestedRepositoryConflictId.equals(
>>>> getConflictId( attachedArtifact ) ) )
>>>> +                if ( requestedArtifact.getProperty ( "type", ""
>>>> ).equals( attachedArtifact.getType() )
>>>> +                     && classifierComparison (
>>>> requestedArtifact.getClassifier(), attachedArtifact.getClassifier() )
>>>> +                     && requestedRepositoryConflictId.equals(
>>>> getConflictId( attachedArtifact ) ) )
>>>>                 {
>>>>                     return attachedArtifact;
>>>>                 }
>>>> @@ -152,6 +155,12 @@ class ReactorReader
>>>>
>>>>         return null;
>>>>     }
>>>> +
>>>> +    private boolean classifierComparison ( String c1, String c2 )
>>>> +    {
>>>> +        return c1 == null && c2 == null
>>>> +                        || ((c1 != null) && c1.equals(c2));
>>>> +    }
>>>>
>>>>     /**
>>>>      * Gets the repository conflict id of the specified artifact. Unlike
>>>> the dependency conflict id, the repository
>>>>
>>>>
>>>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
> For additional commands, e-mail: dev-h...@maven.apache.org
>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
For additional commands, e-mail: dev-h...@maven.apache.org

Reply via email to