You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by kr...@apache.org on 2015/12/04 15:48:06 UTC
svn commit: r1717974 - in /maven/shared/trunk/maven-dependency-analyzer: ./
src/main/java/org/apache/maven/shared/dependency/analyzer/asm/
src/test/java/org/apache/maven/shared/dependency/analyzer/
src/test/resources/inlinedStaticReference/ src/test/re...
Author: krosenvold
Date: Fri Dec 4 14:48:05 2015
New Revision: 1717974
URL: http://svn.apache.org/viewvc?rev=1717974&view=rev
Log:
Added support for constant pool parsing to find more deps
Now detectes jdk8 lambdas and static refs on jdk8
Added:
maven/shared/trunk/maven-dependency-analyzer/src/main/java/org/apache/maven/shared/dependency/analyzer/asm/ConstantPoolParser.java
maven/shared/trunk/maven-dependency-analyzer/src/test/resources/inlinedStaticReference/
maven/shared/trunk/maven-dependency-analyzer/src/test/resources/inlinedStaticReference/pom.xml
maven/shared/trunk/maven-dependency-analyzer/src/test/resources/inlinedStaticReference/src/
maven/shared/trunk/maven-dependency-analyzer/src/test/resources/inlinedStaticReference/src/main/
maven/shared/trunk/maven-dependency-analyzer/src/test/resources/inlinedStaticReference/src/main/java/
maven/shared/trunk/maven-dependency-analyzer/src/test/resources/inlinedStaticReference/src/main/java/inlinedStaticReference/
maven/shared/trunk/maven-dependency-analyzer/src/test/resources/inlinedStaticReference/src/main/java/inlinedStaticReference/Project.java
- copied, changed from r1717675, maven/shared/trunk/maven-dependency-analyzer/src/test/resources/jarWithTestDependency/project2/src/test/java/jarWithTestDependency/project2/Project2.java
maven/shared/trunk/maven-dependency-analyzer/src/test/resources/java8methodRefs/
maven/shared/trunk/maven-dependency-analyzer/src/test/resources/java8methodRefs/pom.xml
maven/shared/trunk/maven-dependency-analyzer/src/test/resources/java8methodRefs/src/
maven/shared/trunk/maven-dependency-analyzer/src/test/resources/java8methodRefs/src/main/
maven/shared/trunk/maven-dependency-analyzer/src/test/resources/java8methodRefs/src/main/java/
maven/shared/trunk/maven-dependency-analyzer/src/test/resources/java8methodRefs/src/main/java/inlinedStaticReference/
maven/shared/trunk/maven-dependency-analyzer/src/test/resources/java8methodRefs/src/main/java/inlinedStaticReference/Project.java
- copied, changed from r1717675, maven/shared/trunk/maven-dependency-analyzer/src/test/resources/jarWithTestDependency/project2/src/test/java/jarWithTestDependency/project2/Project2.java
Modified:
maven/shared/trunk/maven-dependency-analyzer/pom.xml
maven/shared/trunk/maven-dependency-analyzer/src/main/java/org/apache/maven/shared/dependency/analyzer/asm/DependencyClassFileVisitor.java
maven/shared/trunk/maven-dependency-analyzer/src/test/java/org/apache/maven/shared/dependency/analyzer/DefaultProjectDependencyAnalyzerTest.java
maven/shared/trunk/maven-dependency-analyzer/src/test/resources/jarWithTestDependency/project2/src/test/java/jarWithTestDependency/project2/Project2.java
Modified: maven/shared/trunk/maven-dependency-analyzer/pom.xml
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-dependency-analyzer/pom.xml?rev=1717974&r1=1717973&r2=1717974&view=diff
==============================================================================
--- maven/shared/trunk/maven-dependency-analyzer/pom.xml (original)
+++ maven/shared/trunk/maven-dependency-analyzer/pom.xml Fri Dec 4 14:48:05 2015
@@ -64,6 +64,12 @@
<version>5.0.2</version>
</dependency>
<dependency>
+ <groupId>commons-lang</groupId>
+ <artifactId>commons-lang</artifactId>
+ <version>2.6</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-utils</artifactId>
<version>1.5.1</version>
@@ -103,7 +109,7 @@
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
- <version>3.8.2</version>
+ <version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
@@ -113,6 +119,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
+ <version>2.18.1</version>
<configuration>
<systemProperties>
<property>
Added: maven/shared/trunk/maven-dependency-analyzer/src/main/java/org/apache/maven/shared/dependency/analyzer/asm/ConstantPoolParser.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-dependency-analyzer/src/main/java/org/apache/maven/shared/dependency/analyzer/asm/ConstantPoolParser.java?rev=1717974&view=auto
==============================================================================
--- maven/shared/trunk/maven-dependency-analyzer/src/main/java/org/apache/maven/shared/dependency/analyzer/asm/ConstantPoolParser.java (added)
+++ maven/shared/trunk/maven-dependency-analyzer/src/main/java/org/apache/maven/shared/dependency/analyzer/asm/ConstantPoolParser.java Fri Dec 4 14:48:05 2015
@@ -0,0 +1,171 @@
+package org.apache.maven.shared.dependency.analyzer.asm;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.nio.ByteBuffer;
+import java.nio.ByteOrder;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * A small parser to read the constant pool directly, in case it contains references
+ * ASM does not support.
+ *
+ * Adapted from http://stackoverflow.com/a/32278587/23691
+ */
+public class ConstantPoolParser
+{
+ public static final int HEAD = 0xcafebabe;
+
+ // Constant pool types
+ public static final byte CONSTANT_UTF8 = 1;
+
+ public static final byte CONSTANT_INTEGER = 3;
+
+ public static final byte CONSTANT_FLOAT = 4;
+
+ public static final byte CONSTANT_LONG = 5;
+
+ public static final byte CONSTANT_DOUBLE = 6;
+
+ public static final byte CONSTANT_CLASS = 7;
+
+ public static final byte CONSTANT_STRING = 8;
+
+ public static final byte CONSTANT_FIELDREF = 9;
+
+ public static final byte CONSTANT_METHODREF = 10;
+
+ public static final byte CONSTANT_INTERFACEMETHODREF = 11;
+
+ public static final byte CONSTANT_NAME_AND_TYPE = 12;
+
+ public static final byte CONSTANT_METHODHANDLE = 15;
+
+ public static final byte CONSTANT_METHOD_TYPE = 16;
+
+ public static final byte CONSTANT_INVOKE_DYNAMIC = 18;
+
+ private static final int OXF0 = 0xf0;
+
+ private static final int OXE0 = 0xe0;
+
+ private static final int OX3F = 0x3F;
+
+ static Set<String> getConstantPoolClassReferences( byte[] b )
+ {
+ return parseConstantPoolClassRefereces( ByteBuffer.wrap( b ) );
+ }
+
+ static Set<String> parseConstantPoolClassRefereces( ByteBuffer buf )
+ {
+ if ( buf.order( ByteOrder.BIG_ENDIAN )
+ .getInt() != HEAD )
+ {
+ return Collections.emptySet();
+ }
+ buf.getChar() ; buf.getChar(); // minor + ver
+ Set<Integer> classes = new HashSet<Integer>();
+ Map<Integer, String> stringConstants = new HashMap<Integer, String>();
+ for ( int ix = 1, num = buf.getChar(); ix < num; ix++ )
+ {
+ byte tag = buf.get();
+ switch ( tag )
+ {
+ default:
+ throw new RuntimeException( "Unknown constant pool type" );
+ case CONSTANT_UTF8:
+ stringConstants.put( ix, decodeString( buf ) );
+ continue;
+ case CONSTANT_CLASS:
+ case CONSTANT_STRING:
+ case CONSTANT_METHOD_TYPE:
+ classes.add( (int) buf.getChar() );
+ break;
+ case CONSTANT_FIELDREF:
+ case CONSTANT_METHODREF:
+ case CONSTANT_INTERFACEMETHODREF:
+ case CONSTANT_NAME_AND_TYPE:
+ buf.getChar();
+ buf.getChar();
+ break;
+ case CONSTANT_INTEGER:
+ buf.getInt();
+ break;
+ case CONSTANT_FLOAT:
+ buf.getFloat();
+ break;
+ case CONSTANT_DOUBLE:
+ buf.getDouble();
+ break;
+ case CONSTANT_LONG:
+ buf.getLong();
+ break;
+ case CONSTANT_METHODHANDLE:
+ buf.get();
+ buf.getChar();
+ break;
+ case CONSTANT_INVOKE_DYNAMIC:
+ buf.getChar();
+ buf.getChar();
+ break;
+ }
+ }
+ Set<String> result = new HashSet<String>();
+ for ( Integer aClass : classes )
+ {
+ result.add( stringConstants.get( aClass ) );
+ }
+ return result;
+ }
+
+ private static String decodeString( ByteBuffer buf )
+ {
+ int size = buf.getChar(), oldLimit = buf.limit();
+ buf.limit( buf.position() + size );
+ StringBuilder sb = new StringBuilder( size + ( size >> 1 ) + 16 );
+ while ( buf.hasRemaining() )
+ {
+ byte b = buf.get();
+ if ( b > 0 )
+ {
+ sb.append( (char) b );
+ }
+ else
+ {
+ int b2 = buf.get();
+ if ( ( b & OXF0 ) != OXE0 )
+ {
+ sb.append( (char) ( ( b & 0x1F ) << 6 | b2 & OX3F ) );
+ }
+ else
+ {
+ int b3 = buf.get();
+ sb.append( (char) ( ( b & 0x0F ) << 12 | ( b2 & OX3F ) << 6 | b3 & OX3F ) );
+ }
+ }
+ }
+ buf.limit( oldLimit );
+ return sb.toString();
+ }
+}
Modified: maven/shared/trunk/maven-dependency-analyzer/src/main/java/org/apache/maven/shared/dependency/analyzer/asm/DependencyClassFileVisitor.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-dependency-analyzer/src/main/java/org/apache/maven/shared/dependency/analyzer/asm/DependencyClassFileVisitor.java?rev=1717974&r1=1717973&r2=1717974&view=diff
==============================================================================
--- maven/shared/trunk/maven-dependency-analyzer/src/main/java/org/apache/maven/shared/dependency/analyzer/asm/DependencyClassFileVisitor.java (original)
+++ maven/shared/trunk/maven-dependency-analyzer/src/main/java/org/apache/maven/shared/dependency/analyzer/asm/DependencyClassFileVisitor.java Fri Dec 4 14:48:05 2015
@@ -64,6 +64,12 @@ public class DependencyClassFileVisitor
{
ClassReader reader = new ClassReader( in );
+ final Set<String> constantPoolClassRefs = ConstantPoolParser.getConstantPoolClassReferences( reader.b );
+ for ( String string : constantPoolClassRefs )
+ {
+ resultCollector.addName( string );
+ }
+
AnnotationVisitor annotationVisitor = new DefaultAnnotationVisitor( resultCollector );
SignatureVisitor signatureVisitor = new DefaultSignatureVisitor( resultCollector );
FieldVisitor fieldVisitor = new DefaultFieldVisitor( annotationVisitor, resultCollector );
Modified: maven/shared/trunk/maven-dependency-analyzer/src/test/java/org/apache/maven/shared/dependency/analyzer/DefaultProjectDependencyAnalyzerTest.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-dependency-analyzer/src/test/java/org/apache/maven/shared/dependency/analyzer/DefaultProjectDependencyAnalyzerTest.java?rev=1717974&r1=1717973&r2=1717974&view=diff
==============================================================================
--- maven/shared/trunk/maven-dependency-analyzer/src/test/java/org/apache/maven/shared/dependency/analyzer/DefaultProjectDependencyAnalyzerTest.java (original)
+++ maven/shared/trunk/maven-dependency-analyzer/src/test/java/org/apache/maven/shared/dependency/analyzer/DefaultProjectDependencyAnalyzerTest.java Fri Dec 4 14:48:05 2015
@@ -19,14 +19,7 @@ package org.apache.maven.shared.dependen
* under the License.
*/
-import java.io.File;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Properties;
-import java.util.Set;
-
+import org.apache.commons.lang.SystemUtils;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.DefaultArtifact;
import org.apache.maven.artifact.handler.ArtifactHandler;
@@ -40,10 +33,19 @@ import org.apache.maven.shared.test.plug
import org.apache.maven.shared.test.plugin.RepositoryTool;
import org.apache.maven.shared.test.plugin.TestToolsException;
import org.codehaus.plexus.PlexusTestCase;
+import org.junit.Assume;
+
+import java.io.File;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Properties;
+import java.util.Set;
/**
* Tests <code>DefaultProjectDependencyAnalyzer</code>.
- *
+ *
* @author <a href="mailto:markhobson@gmail.com">Mark Hobson</a>
* @version $Id$
* @see DefaultProjectDependencyAnalyzer
@@ -78,7 +80,8 @@ public class DefaultProjectDependencyAna
if ( localRepo == null )
{
RepositoryTool repositoryTool = (RepositoryTool) lookup( RepositoryTool.ROLE );
- localRepo = repositoryTool.findLocalRepositoryDirectory().getAbsoluteFile();
+ localRepo = repositoryTool.findLocalRepositoryDirectory()
+ .getAbsoluteFile();
System.out.println( "Local repository: " + localRepo );
}
@@ -115,6 +118,55 @@ public class DefaultProjectDependencyAna
assertEquals( expectedAnalysis, actualAnalysis );
}
+ public void testJava8methodRefs()
+ throws TestToolsException, ProjectDependencyAnalyzerException
+ {
+ if ( !SystemUtils.isJavaVersionAtLeast( 180 ) )
+ {
+ return;
+ }
+ // Only visible through constant pool analysis
+ compileProject( "java8methodRefs/pom.xml" );
+
+ MavenProject project = getProject( "java8methodRefs/pom.xml" );
+
+ ProjectDependencyAnalysis actualAnalysis = analyzer.analyze( project );
+
+ Artifact project1 = createArtifact( "commons-io", "commons-io", "jar", "2.4", "compile" );
+ Artifact project2 = createArtifact( "commons-lang", "commons-lang", "jar", "2.6", "compile" );
+ Set<Artifact> usedDeclaredArtifacts = new HashSet<Artifact>( Arrays.asList( project1, project2 ) );
+
+ ProjectDependencyAnalysis expectedAnalysis =
+ new ProjectDependencyAnalysis( usedDeclaredArtifacts, new HashSet<Artifact>(), new HashSet<Artifact>() );
+
+ assertEquals( expectedAnalysis, actualAnalysis );
+ }
+
+
+ public void testInlinedStaticReferece()
+ throws TestToolsException, ProjectDependencyAnalyzerException
+ {
+ if ( !SystemUtils.isJavaVersionAtLeast( 180 ) )
+ {
+ return;
+ }
+
+ // Only visible through constant pool analysis
+ compileProject( "inlinedStaticReference/pom.xml" );
+
+ MavenProject project = getProject( "inlinedStaticReference/pom.xml" );
+
+ ProjectDependencyAnalysis actualAnalysis = analyzer.analyze( project );
+
+ Artifact project1 = createArtifact( "dom4j", "dom4j", "jar", "1.6.1", "compile" );
+ Set<Artifact> usedDeclaredArtifacts = Collections.singleton( project1 );
+
+ ProjectDependencyAnalysis expectedAnalysis =
+ new ProjectDependencyAnalysis( usedDeclaredArtifacts, new HashSet<Artifact>(), new HashSet<Artifact>() );
+
+ assertEquals( expectedAnalysis, actualAnalysis );
+ }
+
public void testJarWithCompileDependency()
throws TestToolsException, ProjectDependencyAnalyzerException
{
@@ -122,11 +174,13 @@ public class DefaultProjectDependencyAna
MavenProject project2 = getProject( "jarWithCompileDependency/project2/pom.xml" );
- if ( project2.getBuild().getOutputDirectory().contains( "${" ) )
+ if ( project2.getBuild()
+ .getOutputDirectory()
+ .contains( "${" ) )
{
// if Maven version used as dependency is upgraded to >= 2.2.0
- throw new TestToolsException( "output directory was not interpolated: "
- + project2.getBuild().getOutputDirectory() );
+ throw new TestToolsException( "output directory was not interpolated: " + project2.getBuild()
+ .getOutputDirectory() );
}
ProjectDependencyAnalysis actualAnalysis = analyzer.analyze( project2 );
@@ -143,6 +197,13 @@ public class DefaultProjectDependencyAna
public void testJarWithTestDependency()
throws TestToolsException, ProjectDependencyAnalyzerException
{
+ if ( SystemUtils.isJavaVersionAtLeast( 180 ) )
+ {
+ return;
+ }
+
+ Assume.assumeTrue( !SystemUtils.isJavaVersionAtLeast( 180 ) );
+
compileProject( "jarWithTestDependency/pom.xml" );
MavenProject project2 = getProject( "jarWithTestDependency/project2/pom.xml" );
@@ -150,8 +211,8 @@ public class DefaultProjectDependencyAna
ProjectDependencyAnalysis actualAnalysis = analyzer.analyze( project2 );
Artifact project1 =
- createArtifact( "org.apache.maven.shared.dependency-analyzer.tests", "jarWithTestDependency1", "jar",
- "1.0", "test" );
+ createArtifact( "org.apache.maven.shared.dependency-analyzer.tests", "jarWithTestDependency1", "jar", "1.0",
+ "test" );
Set<Artifact> usedDeclaredArtifacts = Collections.singleton( project1 );
Artifact junit = createArtifact( "junit", "junit", "jar", "3.8.1", "test" );
@@ -164,7 +225,7 @@ public class DefaultProjectDependencyAna
// MSHARED-253: force used dependency (which is actually used but not detected)
ProjectDependencyAnalysis forcedAnalysis =
- actualAnalysis.forceDeclaredDependenciesUsage( new String[] { "junit:junit" } );
+ actualAnalysis.forceDeclaredDependenciesUsage( new String[]{ "junit:junit" } );
usedDeclaredArtifacts = new HashSet<Artifact>( Arrays.asList( project1, junit ) );
expectedAnalysis = new ProjectDependencyAnalysis( usedDeclaredArtifacts, null, null );
@@ -176,10 +237,11 @@ public class DefaultProjectDependencyAna
forcedAnalysis.forceDeclaredDependenciesUsage( new String[]{ "junit:junit" } );
fail( "failure expected since junit dependency is declared-used" );
}
- catch( ProjectDependencyAnalyzerException pdae )
+ catch ( ProjectDependencyAnalyzerException pdae )
{
- assertTrue( pdae.getMessage().contains( "Trying to force use of dependencies which are "
- + "declared but already detected as used: [junit:junit]" ) );
+ assertTrue( pdae.getMessage()
+ .contains( "Trying to force use of dependencies which are "
+ + "declared but already detected as used: [junit:junit]" ) );
}
try
@@ -187,13 +249,40 @@ public class DefaultProjectDependencyAna
forcedAnalysis.forceDeclaredDependenciesUsage( new String[]{ "undefined:undefined" } );
fail( "failure expected since undefined dependency is not declared" );
}
- catch( ProjectDependencyAnalyzerException pdae )
+ catch ( ProjectDependencyAnalyzerException pdae )
{
- assertTrue( pdae.getMessage().contains( "Trying to force use of dependencies which are "
- + "not declared: [undefined:undefined]" ) );
+ assertTrue( pdae.getMessage()
+ .contains( "Trying to force use of dependencies which are "
+ + "not declared: [undefined:undefined]" ) );
}
}
+ public void testJarWithTestDependencyJDK8()
+ throws TestToolsException, ProjectDependencyAnalyzerException
+ {
+ if ( !SystemUtils.isJavaVersionAtLeast( 180 ) )
+ {
+ return;
+ }
+
+ compileProject( "jarWithTestDependency/pom.xml" );
+
+ MavenProject project2 = getProject( "jarWithTestDependency/project2/pom.xml" );
+
+ ProjectDependencyAnalysis actualAnalysis = analyzer.analyze( project2 );
+
+ Artifact project1 =
+ createArtifact( "org.apache.maven.shared.dependency-analyzer.tests", "jarWithTestDependency1", "jar", "1.0",
+ "test" );
+ Artifact junit = createArtifact( "junit", "junit", "jar", "3.8.1", "test" );
+ Set<Artifact> usedDeclaredArtifacts = new HashSet<Artifact>( Arrays.asList( project1, junit ) );
+
+ ProjectDependencyAnalysis expectedAnalysis =
+ new ProjectDependencyAnalysis( usedDeclaredArtifacts, null, new HashSet<Artifact>() );
+
+ assertEquals( expectedAnalysis, actualAnalysis );
+ }
+
public void testJarWithXmlTransitiveDependency()
throws TestToolsException, ProjectDependencyAnalyzerException
{
@@ -206,8 +295,7 @@ public class DefaultProjectDependencyAna
Artifact jdom = createArtifact( "dom4j", "dom4j", "jar", "1.6.1", "compile" );
Set<Artifact> usedDeclaredArtifacts = Collections.singleton( jdom );
- ProjectDependencyAnalysis expectedAnalysis =
- new ProjectDependencyAnalysis( usedDeclaredArtifacts, null, null );
+ ProjectDependencyAnalysis expectedAnalysis = new ProjectDependencyAnalysis( usedDeclaredArtifacts, null, null );
// MSHARED-47: usedUndeclaredArtifacts=[xml-apis:xml-apis:jar:1.0.b2:compile]
//assertEquals( expectedAnalysis, actualAnalysis );
@@ -221,11 +309,11 @@ public class DefaultProjectDependencyAna
// difficult to create multi-module project with Maven 2.x, so here's hacky solution
// to get a inter-module dependency
MavenProject project = getProject( "multimoduleProject/module2/pom.xml" );
- @SuppressWarnings( "unchecked" )
- Set<Artifact> dependencyArtifacts = project.getArtifacts();
+ @SuppressWarnings( "unchecked" ) Set<Artifact> dependencyArtifacts = project.getArtifacts();
for ( Artifact artifact : dependencyArtifacts )
{
- if ( artifact.getArtifactId().equals( "test-module1" ) )
+ if ( artifact.getArtifactId()
+ .equals( "test-module1" ) )
{
File dir = getTestFile( "target/test-classes/", "multimoduleProject/module1/target/classes/" );
artifact.setFile( dir );
@@ -237,8 +325,7 @@ public class DefaultProjectDependencyAna
Artifact junit = createArtifact( "org.apache.maven.its.dependency", "test-module1", "jar", "1.0", "compile" );
Set<Artifact> usedDeclaredArtifacts = Collections.singleton( junit );
- ProjectDependencyAnalysis expectedAnalysis =
- new ProjectDependencyAnalysis( usedDeclaredArtifacts, null, null );
+ ProjectDependencyAnalysis expectedAnalysis = new ProjectDependencyAnalysis( usedDeclaredArtifacts, null, null );
assertEquals( expectedAnalysis, actualAnalysis );
}
Added: maven/shared/trunk/maven-dependency-analyzer/src/test/resources/inlinedStaticReference/pom.xml
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-dependency-analyzer/src/test/resources/inlinedStaticReference/pom.xml?rev=1717974&view=auto
==============================================================================
--- maven/shared/trunk/maven-dependency-analyzer/src/test/resources/inlinedStaticReference/pom.xml (added)
+++ maven/shared/trunk/maven-dependency-analyzer/src/test/resources/inlinedStaticReference/pom.xml Fri Dec 4 14:48:05 2015
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one
+ ~ or more contributor license agreements. See the NOTICE file
+ ~ distributed with this work for additional information
+ ~ regarding copyright ownership. The ASF licenses this file
+ ~ to you under the Apache License, Version 2.0 (the
+ ~ "License"); you may not use this file except in compliance
+ ~ with the License. You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing,
+ ~ software distributed under the License is distributed on an
+ ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ ~ KIND, either express or implied. See the License for the
+ ~ specific language governing permissions and limitations
+ ~ under the License.
+ -->
+
+<project
+ xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+>
+ <modelVersion>4.0.0</modelVersion>
+
+ <groupId>org.apache.maven.shared.dependency-analyzer.tests</groupId>
+ <artifactId>inlinedStaticReference</artifactId>
+ <version>1.0</version>
+ <packaging>jar</packaging>
+
+ <dependencies>
+ <dependency>
+ <groupId>dom4j</groupId>
+ <artifactId>dom4j</artifactId>
+ <version>1.6.1</version>
+ </dependency>
+ </dependencies>
+</project>
Copied: maven/shared/trunk/maven-dependency-analyzer/src/test/resources/inlinedStaticReference/src/main/java/inlinedStaticReference/Project.java (from r1717675, maven/shared/trunk/maven-dependency-analyzer/src/test/resources/jarWithTestDependency/project2/src/test/java/jarWithTestDependency/project2/Project2.java)
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-dependency-analyzer/src/test/resources/inlinedStaticReference/src/main/java/inlinedStaticReference/Project.java?p2=maven/shared/trunk/maven-dependency-analyzer/src/test/resources/inlinedStaticReference/src/main/java/inlinedStaticReference/Project.java&p1=maven/shared/trunk/maven-dependency-analyzer/src/test/resources/jarWithTestDependency/project2/src/test/java/jarWithTestDependency/project2/Project2.java&r1=1717675&r2=1717974&rev=1717974&view=diff
==============================================================================
--- maven/shared/trunk/maven-dependency-analyzer/src/test/resources/jarWithTestDependency/project2/src/test/java/jarWithTestDependency/project2/Project2.java (original)
+++ maven/shared/trunk/maven-dependency-analyzer/src/test/resources/inlinedStaticReference/src/main/java/inlinedStaticReference/Project.java Fri Dec 4 14:48:05 2015
@@ -1,4 +1,4 @@
-package jarWithTestDependency.project2;
+package inlinedStaticReference;
/*
* Licensed to the Apache Software Foundation (ASF) under one
@@ -19,24 +19,15 @@ package jarWithTestDependency.project2;
* under the License.
*/
-import jarWithTestDependency.project1.Project1;
+import org.dom4j.Node;
+import org.dom4j.Text;
-/**
- *
- *
- * @author <a href="mailto:markhobson@gmail.com">Mark Hobson</a>
- * @version $Id$
- */
-public class Project2
+public class Project
{
- // using a constant from JUnit requires junit dependency but is not detected since the constant
- // value is copied, then nothing can be detected in bytecode
- public final static int STATUS_ERROR = junit.runner.TestRunListener.STATUS_ERROR;
-
- // constructors -----------------------------------------------------------
+ public static final short myvalue = Node.ELEMENT_NODE;
- public Project2()
+ public Project()
{
- Project1 project = new Project1();
+ // no op
}
}
Modified: maven/shared/trunk/maven-dependency-analyzer/src/test/resources/jarWithTestDependency/project2/src/test/java/jarWithTestDependency/project2/Project2.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-dependency-analyzer/src/test/resources/jarWithTestDependency/project2/src/test/java/jarWithTestDependency/project2/Project2.java?rev=1717974&r1=1717973&r2=1717974&view=diff
==============================================================================
--- maven/shared/trunk/maven-dependency-analyzer/src/test/resources/jarWithTestDependency/project2/src/test/java/jarWithTestDependency/project2/Project2.java (original)
+++ maven/shared/trunk/maven-dependency-analyzer/src/test/resources/jarWithTestDependency/project2/src/test/java/jarWithTestDependency/project2/Project2.java Fri Dec 4 14:48:05 2015
@@ -31,6 +31,7 @@ public class Project2
{
// using a constant from JUnit requires junit dependency but is not detected since the constant
// value is copied, then nothing can be detected in bytecode
+ // Not the case any more, since we sniff it from the constant pool
public final static int STATUS_ERROR = junit.runner.TestRunListener.STATUS_ERROR;
// constructors -----------------------------------------------------------
Added: maven/shared/trunk/maven-dependency-analyzer/src/test/resources/java8methodRefs/pom.xml
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-dependency-analyzer/src/test/resources/java8methodRefs/pom.xml?rev=1717974&view=auto
==============================================================================
--- maven/shared/trunk/maven-dependency-analyzer/src/test/resources/java8methodRefs/pom.xml (added)
+++ maven/shared/trunk/maven-dependency-analyzer/src/test/resources/java8methodRefs/pom.xml Fri Dec 4 14:48:05 2015
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one
+ ~ or more contributor license agreements. See the NOTICE file
+ ~ distributed with this work for additional information
+ ~ regarding copyright ownership. The ASF licenses this file
+ ~ to you under the Apache License, Version 2.0 (the
+ ~ "License"); you may not use this file except in compliance
+ ~ with the License. You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing,
+ ~ software distributed under the License is distributed on an
+ ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ ~ KIND, either express or implied. See the License for the
+ ~ specific language governing permissions and limitations
+ ~ under the License.
+ -->
+
+<project
+ xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+>
+ <modelVersion>4.0.0</modelVersion>
+
+ <groupId>org.apache.maven.shared.dependency-analyzer.tests</groupId>
+ <artifactId>java8methodreferences</artifactId>
+ <version>1.0</version>
+ <packaging>jar</packaging>
+
+ <dependencies>
+ <dependency>
+ <groupId>commons-io</groupId>
+ <artifactId>commons-io</artifactId>
+ <version>2.4</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-lang</groupId>
+ <artifactId>commons-lang</artifactId>
+ <version>2.6</version>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <configuration>
+ <source>1.8</source>
+ <target>1.8</target>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+</project>
Copied: maven/shared/trunk/maven-dependency-analyzer/src/test/resources/java8methodRefs/src/main/java/inlinedStaticReference/Project.java (from r1717675, maven/shared/trunk/maven-dependency-analyzer/src/test/resources/jarWithTestDependency/project2/src/test/java/jarWithTestDependency/project2/Project2.java)
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-dependency-analyzer/src/test/resources/java8methodRefs/src/main/java/inlinedStaticReference/Project.java?p2=maven/shared/trunk/maven-dependency-analyzer/src/test/resources/java8methodRefs/src/main/java/inlinedStaticReference/Project.java&p1=maven/shared/trunk/maven-dependency-analyzer/src/test/resources/jarWithTestDependency/project2/src/test/java/jarWithTestDependency/project2/Project2.java&r1=1717675&r2=1717974&rev=1717974&view=diff
==============================================================================
--- maven/shared/trunk/maven-dependency-analyzer/src/test/resources/jarWithTestDependency/project2/src/test/java/jarWithTestDependency/project2/Project2.java (original)
+++ maven/shared/trunk/maven-dependency-analyzer/src/test/resources/java8methodRefs/src/main/java/inlinedStaticReference/Project.java Fri Dec 4 14:48:05 2015
@@ -1,4 +1,4 @@
-package jarWithTestDependency.project2;
+package inlinedStaticReference;
/*
* Licensed to the Apache Software Foundation (ASF) under one
@@ -19,24 +19,17 @@ package jarWithTestDependency.project2;
* under the License.
*/
-import jarWithTestDependency.project1.Project1;
+import java.io.File;
+import java.util.function.Function;
-/**
- *
- *
- * @author <a href="mailto:markhobson@gmail.com">Mark Hobson</a>
- * @version $Id$
- */
-public class Project2
+import org.apache.commons.io.FileUtils;
+
+public class Project
{
- // using a constant from JUnit requires junit dependency but is not detected since the constant
- // value is copied, then nothing can be detected in bytecode
- public final static int STATUS_ERROR = junit.runner.TestRunListener.STATUS_ERROR;
-
- // constructors -----------------------------------------------------------
-
- public Project2()
- {
- Project1 project = new Project1();
+ public static final Function<String, File> souv = FileUtils::getFile;
+
+ public Project() {
+ Function<Character, String> fn = org.apache.commons.lang.CharUtils::unicodeEscaped;
}
+
}