[JBoss JIRA] (SHRINKRES-143) tolerate illegal dependency scopes
by Tamás Kimmel (JIRA)
[ https://issues.jboss.org/browse/SHRINKRES-143?page=com.atlassian.jira.plu... ]
Tamás Kimmel commented on SHRINKRES-143:
----------------------------------------
Hi!
Checked by running 'mvn dependency:tree'
Maven 3.0.5 prints runtime, 3.1.1 prints 'test,provided' for vorbis-java-core.
After checked with 'mvn dependency:build-classpath -DincludeScope=runtime'
Both 3.0.5 and 3.1.1 puts vorbis-java-core in the classpath. So the real fallback seems to be runtime.
My test pom is a simple pom.xml skeleton with a single dependency.
{code:xml}
<dependency>
<groupId>org.gagravarr</groupId>
<artifactId>vorbis-java-tika</artifactId>
<version>0.1</version>
</dependency>
{code}
> tolerate illegal dependency scopes
> ----------------------------------
>
> Key: SHRINKRES-143
> URL: https://issues.jboss.org/browse/SHRINKRES-143
> Project: ShrinkWrap Resolvers
> Issue Type: Enhancement
> Reporter: Tamás Kimmel
> Assignee: Andrew Rubinger
>
> It would be nice to send a warning when a scope is illegal, and fallback to compile. At least, when the dependency is not nedded. For example it is a transitive dependency, but i try to resolve without transitivity.
> Now resolver sends an exception, and my test blows.
> My exact use-case:
> {noformat}
> PomEquippedResolveStage resolver = Maven.resolver().offline().loadPomFromFile("pom.xml");
> MavenStrategyStage strategy = resolver.resolve(
> "org.modeshape:modeshape-jcr-api",
> "org.modeshape:modeshape-jcr",
> "org.modeshape:modeshape-common");
> File[] jars = strategy.withoutTransitivity().asFile();
> {noformat}
> In pom.xml i have:
> {noformat}
> <dependencyManagement>
> <dependencies>
> <dependency>
> <groupId>org.modeshape.bom</groupId>
> <artifactId>modeshape-bom-embedded</artifactId>
> <version>3.2.0.Final</version>
> <type>pom</type>
> <scope>import</scope>
> </dependency>
> </dependencies>
> </dependencyManagement>
> {noformat}
> I get an exception:
> {noformat}
> java.lang.IllegalArgumentException: Scope type test,provided is not supported.
> at org.jboss.shrinkwrap.resolver.api.maven.ScopeType.fromScopeType(ScopeType.java:72)
> at org.jboss.shrinkwrap.resolver.impl.maven.convert.MavenConverter.fromDependency(MavenConverter.java:116)
> at org.jboss.shrinkwrap.resolver.impl.maven.bootstrap.MavenResolutionFilterWrap.accept(MavenRepositorySystem.java:211)
> at org.sonatype.aether.util.graph.FilteringDependencyVisitor.visitEnter(FilteringDependencyVisitor.java:73)
> at org.sonatype.aether.util.graph.TreeDependencyVisitor.visitEnter(TreeDependencyVisitor.java:61)
> at org.sonatype.aether.impl.internal.GraphEdge.accept(GraphEdge.java:198)
> at org.sonatype.aether.impl.internal.GraphEdge.accept(GraphEdge.java:202)
> at org.sonatype.aether.impl.internal.GraphEdge.accept(GraphEdge.java:202)
> at org.sonatype.aether.impl.internal.GraphEdge.accept(GraphEdge.java:202)
> at org.sonatype.aether.impl.internal.GraphEdge.accept(GraphEdge.java:202)
> at org.sonatype.aether.impl.internal.DefaultRepositorySystem.resolveDependencies(DefaultRepositorySystem.java:352)
> at org.jboss.shrinkwrap.resolver.impl.maven.bootstrap.MavenRepositorySystem.resolveDependencies(MavenRepositorySystem.java:122)
> at org.jboss.shrinkwrap.resolver.impl.maven.MavenWorkingSessionImpl.resolveDependencies(MavenWorkingSessionImpl.java:251)
> at org.jboss.shrinkwrap.resolver.impl.maven.MavenStrategyStageBaseImpl.using(MavenStrategyStageBaseImpl.java:67)
> at org.jboss.shrinkwrap.resolver.impl.maven.MavenStrategyStageBaseImpl.withoutTransitivity(MavenStrategyStageBaseImpl.java:54)
> at org.jboss.shrinkwrap.resolver.impl.maven.MavenStrategyStageBaseImpl.withoutTransitivity(MavenStrategyStageBaseImpl.java:38)
> {noformat}
> The real problem is in a transitive dependency. http://repo1.maven.org/maven2/org/gagravarr/vorbis-java-tika/0.1/vorbis-j...
> {noformat}
> <dependency>
> <groupId>${project.groupId}</groupId>
> <artifactId>vorbis-java-core</artifactId>
> <version>${project.version}</version>
> <classifier>tests</classifier>
> <scope>test,provided</scope>
> </dependency>
> {noformat}
> The scope is illegal. But in my case it is irrelavant. My workaround was to upload a fixed java-tika pom.xml to our corporate nexus. I think it would be nice to tolerate this error in shrinkwrap-resolver. My other tools like maven, and netbeans are tolerate it too. (maven fallbacks to compile scope as i understand)
> I should file a bug report to vorbis-java-tika, but i'm afraid there are some other projects in the wild with similar errors.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira
10 years, 5 months
[JBoss JIRA] (SHRINKRES-153) MavenResolverSystemImpl should implement MavenWorkingSessionContainer
by Karel Piwko (JIRA)
Karel Piwko created SHRINKRES-153:
-------------------------------------
Summary: MavenResolverSystemImpl should implement MavenWorkingSessionContainer
Key: SHRINKRES-153
URL: https://issues.jboss.org/browse/SHRINKRES-153
Project: ShrinkWrap Resolvers
Issue Type: Enhancement
Components: impl-maven
Affects Versions: 2.0.0
Reporter: Karel Piwko
Assignee: Andrew Rubinger
*Given*:
I have MavenResolverSystem instance retrieved via Maven.resolver() call.
*When*:
I want to debug internals of the system.
*Expect*:
Instance can be type-casted to MavenWorkingSessionContainer, which allows to get direct access to the session that can later be investigated - loaded dependency management, dependencies to be resolved and so on.
*Actual behavior*:
Cast fails, as MavenResolverySystemImpl does not implement MavenWorkingSessionContainer, although it internally contains the session.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira
10 years, 5 months
[JBoss JIRA] (SHRINKRES-152) Maven dependency resolution ignores transitive exclusions
by Karel Piwko (JIRA)
[ https://issues.jboss.org/browse/SHRINKRES-152?page=com.atlassian.jira.plu... ]
Karel Piwko commented on SHRINKRES-152:
---------------------------------------
Ken, you mean that without false all transitive dependencies starting from org.antlr:antlr or antlr:antlr node in dependency tree are excluded, right? That would be expected behavior.
> Maven dependency resolution ignores transitive exclusions
> ---------------------------------------------------------
>
> Key: SHRINKRES-152
> URL: https://issues.jboss.org/browse/SHRINKRES-152
> Project: ShrinkWrap Resolvers
> Issue Type: Bug
> Affects Versions: 2.0.0
> Reporter: Ken H
>
> In certain circumstances, it seems that the Maven resolver (in v2.0.0) is ignoring transitive exclusions.
> Relevant pom.xml:
> {code}
> <dependency>
> <groupId>org.drools</groupId>
> <artifactId>drools-core</artifactId>
> <version>${drools.version}</version>
> </dependency>
> <dependency>
> <groupId>org.drools</groupId>
> <artifactId>drools-compiler</artifactId>
> <version>${drools.version}</version>
> <exclusions>
> <exclusion>
> <groupId>org.antlr</groupId>
> <artifactId>antlr</artifactId>
> </exclusion>
> <exclusion>
> <groupId>org.antlr</groupId>
> <artifactId>antlr-runtime</artifactId>
> </exclusion>
> <exclusion>
> <groupId>antlr</groupId>
> <artifactId>antlr</artifactId>
> </exclusion>
> <exclusion>
> <groupId>antlr</groupId>
> <artifactId>antlr-runtime</artifactId>
> </exclusion>
> </exclusions>
> </dependency>
>
> <dependency>
> <groupId>org.hibernate</groupId>
> <artifactId>hibernate-core</artifactId>
> <version>4.0.1.Final</version>
> <scope>provided</scope>
> <exclusions>
> <exclusion>
> <groupId>antlr</groupId>
> <artifactId>antlr</artifactId>
> </exclusion>
> </exclusions>
> </dependency>
> {code}
> Expected way to build dependency list:
> {code}
> File[] dependencyFiles = Maven.resolver().loadPomFromFile("pom.xml")
> .importRuntimeAndTestDependencies()
> .resolve().withTransitivity().asFile();
> {code}
> However, this results in antlr still being added to the dependency list and the resulting WebArchive.
> My temporary workaround is to explicitly exclude the G:A:
> {code}
> File[] dependencyFiles = Maven.resolver().loadPomFromFile("pom.xml")
> .importRuntimeAndTestDependencies()
> .resolve()
> .using( new RejectDependenciesStrategy(false, "org.antlr:antlr", "antlr:antlr") )
> .withTransitivity().asFile();
> {code}
> Also note that the false is required in the RejectDependenciesStrategy. Without it, all (yes, all) transitive dependencies are ignored. This may be a separate issue but I want to mention it for anyone attempting this workaround.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira
10 years, 5 months
[JBoss JIRA] (SHRINKRES-143) tolerate illegal dependency scopes
by Karel Piwko (JIRA)
[ https://issues.jboss.org/browse/SHRINKRES-143?page=com.atlassian.jira.plu... ]
Karel Piwko commented on SHRINKRES-143:
---------------------------------------
Tamas, what happens in Maven? Does it fallback to compile? Any changes in behavior in between Maven 3.0 and 3.1?
> tolerate illegal dependency scopes
> ----------------------------------
>
> Key: SHRINKRES-143
> URL: https://issues.jboss.org/browse/SHRINKRES-143
> Project: ShrinkWrap Resolvers
> Issue Type: Enhancement
> Reporter: Tamás Kimmel
> Assignee: Andrew Rubinger
>
> It would be nice to send a warning when a scope is illegal, and fallback to compile. At least, when the dependency is not nedded. For example it is a transitive dependency, but i try to resolve without transitivity.
> Now resolver sends an exception, and my test blows.
> My exact use-case:
> {noformat}
> PomEquippedResolveStage resolver = Maven.resolver().offline().loadPomFromFile("pom.xml");
> MavenStrategyStage strategy = resolver.resolve(
> "org.modeshape:modeshape-jcr-api",
> "org.modeshape:modeshape-jcr",
> "org.modeshape:modeshape-common");
> File[] jars = strategy.withoutTransitivity().asFile();
> {noformat}
> In pom.xml i have:
> {noformat}
> <dependencyManagement>
> <dependencies>
> <dependency>
> <groupId>org.modeshape.bom</groupId>
> <artifactId>modeshape-bom-embedded</artifactId>
> <version>3.2.0.Final</version>
> <type>pom</type>
> <scope>import</scope>
> </dependency>
> </dependencies>
> </dependencyManagement>
> {noformat}
> I get an exception:
> {noformat}
> java.lang.IllegalArgumentException: Scope type test,provided is not supported.
> at org.jboss.shrinkwrap.resolver.api.maven.ScopeType.fromScopeType(ScopeType.java:72)
> at org.jboss.shrinkwrap.resolver.impl.maven.convert.MavenConverter.fromDependency(MavenConverter.java:116)
> at org.jboss.shrinkwrap.resolver.impl.maven.bootstrap.MavenResolutionFilterWrap.accept(MavenRepositorySystem.java:211)
> at org.sonatype.aether.util.graph.FilteringDependencyVisitor.visitEnter(FilteringDependencyVisitor.java:73)
> at org.sonatype.aether.util.graph.TreeDependencyVisitor.visitEnter(TreeDependencyVisitor.java:61)
> at org.sonatype.aether.impl.internal.GraphEdge.accept(GraphEdge.java:198)
> at org.sonatype.aether.impl.internal.GraphEdge.accept(GraphEdge.java:202)
> at org.sonatype.aether.impl.internal.GraphEdge.accept(GraphEdge.java:202)
> at org.sonatype.aether.impl.internal.GraphEdge.accept(GraphEdge.java:202)
> at org.sonatype.aether.impl.internal.GraphEdge.accept(GraphEdge.java:202)
> at org.sonatype.aether.impl.internal.DefaultRepositorySystem.resolveDependencies(DefaultRepositorySystem.java:352)
> at org.jboss.shrinkwrap.resolver.impl.maven.bootstrap.MavenRepositorySystem.resolveDependencies(MavenRepositorySystem.java:122)
> at org.jboss.shrinkwrap.resolver.impl.maven.MavenWorkingSessionImpl.resolveDependencies(MavenWorkingSessionImpl.java:251)
> at org.jboss.shrinkwrap.resolver.impl.maven.MavenStrategyStageBaseImpl.using(MavenStrategyStageBaseImpl.java:67)
> at org.jboss.shrinkwrap.resolver.impl.maven.MavenStrategyStageBaseImpl.withoutTransitivity(MavenStrategyStageBaseImpl.java:54)
> at org.jboss.shrinkwrap.resolver.impl.maven.MavenStrategyStageBaseImpl.withoutTransitivity(MavenStrategyStageBaseImpl.java:38)
> {noformat}
> The real problem is in a transitive dependency. http://repo1.maven.org/maven2/org/gagravarr/vorbis-java-tika/0.1/vorbis-j...
> {noformat}
> <dependency>
> <groupId>${project.groupId}</groupId>
> <artifactId>vorbis-java-core</artifactId>
> <version>${project.version}</version>
> <classifier>tests</classifier>
> <scope>test,provided</scope>
> </dependency>
> {noformat}
> The scope is illegal. But in my case it is irrelavant. My workaround was to upload a fixed java-tika pom.xml to our corporate nexus. I think it would be nice to tolerate this error in shrinkwrap-resolver. My other tools like maven, and netbeans are tolerate it too. (maven fallbacks to compile scope as i understand)
> I should file a bug report to vorbis-java-tika, but i'm afraid there are some other projects in the wild with similar errors.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira
10 years, 5 months
[JBoss JIRA] (SHRINKRES-152) Maven dependency resolution ignores transitive exclusions
by Karel Piwko (JIRA)
[ https://issues.jboss.org/browse/SHRINKRES-152?page=com.atlassian.jira.plu... ]
Karel Piwko moved SHRINKWRAP-466 to SHRINKRES-152:
--------------------------------------------------
Project: ShrinkWrap Resolvers (was: ShrinkWrap)
Key: SHRINKRES-152 (was: SHRINKWRAP-466)
> Maven dependency resolution ignores transitive exclusions
> ---------------------------------------------------------
>
> Key: SHRINKRES-152
> URL: https://issues.jboss.org/browse/SHRINKRES-152
> Project: ShrinkWrap Resolvers
> Issue Type: Bug
> Reporter: Ken H
>
> In certain circumstances, it seems that the Maven resolver (in v2.0.0) is ignoring transitive exclusions.
> Relevant pom.xml:
> {code}
> <dependency>
> <groupId>org.drools</groupId>
> <artifactId>drools-core</artifactId>
> <version>${drools.version}</version>
> </dependency>
> <dependency>
> <groupId>org.drools</groupId>
> <artifactId>drools-compiler</artifactId>
> <version>${drools.version}</version>
> <exclusions>
> <exclusion>
> <groupId>org.antlr</groupId>
> <artifactId>antlr</artifactId>
> </exclusion>
> <exclusion>
> <groupId>org.antlr</groupId>
> <artifactId>antlr-runtime</artifactId>
> </exclusion>
> <exclusion>
> <groupId>antlr</groupId>
> <artifactId>antlr</artifactId>
> </exclusion>
> <exclusion>
> <groupId>antlr</groupId>
> <artifactId>antlr-runtime</artifactId>
> </exclusion>
> </exclusions>
> </dependency>
>
> <dependency>
> <groupId>org.hibernate</groupId>
> <artifactId>hibernate-core</artifactId>
> <version>4.0.1.Final</version>
> <scope>provided</scope>
> <exclusions>
> <exclusion>
> <groupId>antlr</groupId>
> <artifactId>antlr</artifactId>
> </exclusion>
> </exclusions>
> </dependency>
> {code}
> Expected way to build dependency list:
> {code}
> File[] dependencyFiles = Maven.resolver().loadPomFromFile("pom.xml")
> .importRuntimeAndTestDependencies()
> .resolve().withTransitivity().asFile();
> {code}
> However, this results in antlr still being added to the dependency list and the resulting WebArchive.
> My temporary workaround is to explicitly exclude the G:A:
> {code}
> File[] dependencyFiles = Maven.resolver().loadPomFromFile("pom.xml")
> .importRuntimeAndTestDependencies()
> .resolve()
> .using( new RejectDependenciesStrategy(false, "org.antlr:antlr", "antlr:antlr") )
> .withTransitivity().asFile();
> {code}
> Also note that the false is required in the RejectDependenciesStrategy. Without it, all (yes, all) transitive dependencies are ignored. This may be a separate issue but I want to mention it for anyone attempting this workaround.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira
10 years, 5 months
[JBoss JIRA] (SHRINKRES-152) Maven dependency resolution ignores transitive exclusions
by Karel Piwko (JIRA)
[ https://issues.jboss.org/browse/SHRINKRES-152?page=com.atlassian.jira.plu... ]
Karel Piwko updated SHRINKRES-152:
----------------------------------
Affects Version/s: 2.0.0
> Maven dependency resolution ignores transitive exclusions
> ---------------------------------------------------------
>
> Key: SHRINKRES-152
> URL: https://issues.jboss.org/browse/SHRINKRES-152
> Project: ShrinkWrap Resolvers
> Issue Type: Bug
> Affects Versions: 2.0.0
> Reporter: Ken H
>
> In certain circumstances, it seems that the Maven resolver (in v2.0.0) is ignoring transitive exclusions.
> Relevant pom.xml:
> {code}
> <dependency>
> <groupId>org.drools</groupId>
> <artifactId>drools-core</artifactId>
> <version>${drools.version}</version>
> </dependency>
> <dependency>
> <groupId>org.drools</groupId>
> <artifactId>drools-compiler</artifactId>
> <version>${drools.version}</version>
> <exclusions>
> <exclusion>
> <groupId>org.antlr</groupId>
> <artifactId>antlr</artifactId>
> </exclusion>
> <exclusion>
> <groupId>org.antlr</groupId>
> <artifactId>antlr-runtime</artifactId>
> </exclusion>
> <exclusion>
> <groupId>antlr</groupId>
> <artifactId>antlr</artifactId>
> </exclusion>
> <exclusion>
> <groupId>antlr</groupId>
> <artifactId>antlr-runtime</artifactId>
> </exclusion>
> </exclusions>
> </dependency>
>
> <dependency>
> <groupId>org.hibernate</groupId>
> <artifactId>hibernate-core</artifactId>
> <version>4.0.1.Final</version>
> <scope>provided</scope>
> <exclusions>
> <exclusion>
> <groupId>antlr</groupId>
> <artifactId>antlr</artifactId>
> </exclusion>
> </exclusions>
> </dependency>
> {code}
> Expected way to build dependency list:
> {code}
> File[] dependencyFiles = Maven.resolver().loadPomFromFile("pom.xml")
> .importRuntimeAndTestDependencies()
> .resolve().withTransitivity().asFile();
> {code}
> However, this results in antlr still being added to the dependency list and the resulting WebArchive.
> My temporary workaround is to explicitly exclude the G:A:
> {code}
> File[] dependencyFiles = Maven.resolver().loadPomFromFile("pom.xml")
> .importRuntimeAndTestDependencies()
> .resolve()
> .using( new RejectDependenciesStrategy(false, "org.antlr:antlr", "antlr:antlr") )
> .withTransitivity().asFile();
> {code}
> Also note that the false is required in the RejectDependenciesStrategy. Without it, all (yes, all) transitive dependencies are ignored. This may be a separate issue but I want to mention it for anyone attempting this workaround.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira
10 years, 5 months