[jira] [Comment Edited] (MNG-7818) [REGRESSION] maven improperly excludes hamcrest-core from junit

2023-06-19 Thread Tamas Cservenak (Jira)


[ 
https://issues.apache.org/jira/browse/MNG-7818?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17734090#comment-17734090
 ] 

Tamas Cservenak edited comment on MNG-7818 at 6/19/23 9:54 AM:
---

What I find here "problematic" is following:
* by importing shrinkwrap BOM you implicitly import maven parent as well (so 
versions and exclusions)
* but project still overrides versions (like junit) BUT "receives" the 
exclusions (this is why this issue was reported)
* shrinkwrap made this "upgrade" as minor (3.1.5) release
* all this looks to me very fragile, convoluted, simply "too much" :smile:


was (Author: cstamas):
What I find here "problematic" is following:
* by importing shrinkwrap BOM you implicitly import maven parent as well (so 
versions and exclusions)
* but project still overrides versions (like junit) BUT "receives" the 
exclusions (this is why this issue was reported)
* all this looks to me very fragile, convoluted, simply "too much" :smile:

> [REGRESSION] maven improperly excludes hamcrest-core from junit
> ---
>
> Key: MNG-7818
> URL: https://issues.apache.org/jira/browse/MNG-7818
> Project: Maven
>  Issue Type: Bug
>  Components: Dependencies
>Affects Versions: 3.9.2
> Environment: Any
>Reporter: Lenny Primak
>Priority: Minor
>
> junit 4 now has exclusions for hamcrest-core, which causes 
> ClassNotFouncException
> BTW: upgrading hamcrest-core to 2.2 (without exclusions) works just fine as 
> well
> Traced to https://issues.apache.org/jira/browse/MNG-7670
> {code:java}
> [INFO] Running com.flowlogix.arqsuite.DeploymentOneTest
> [ERROR] Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.088 
> s <<< FAILURE! -- in com.flowlogix.arqsuite.DeploymentOneTest
> [ERROR] com.flowlogix.arqsuite.DeploymentOneTest.initializationError -- Time 
> elapsed: 0.009 s <<< ERROR!
> java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing
>   at java.base/java.lang.ClassLoader.defineClass1(Native Method)
>   at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1013)
>   at 
> java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150)
>   at 
> java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:862)
>   at 
> java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:760)
>   at 
> java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:681)
>   at 
> java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:639)
>   at 
> java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
>   at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
>   at java.base/java.lang.Class.getDeclaredConstructors0(Native Method)
>   at 
> java.base/java.lang.Class.privateGetDeclaredConstructors(Class.java:3473)
>   at java.base/java.lang.Class.getConstructor0(Class.java:3678)
>   at java.base/java.lang.Class.getConstructor(Class.java:2368)
>   at 
> org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:104)
>   at 
> org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:86)
>   at 
> org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:70)
>   at 
> org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:37)
>   at 
> org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:70)
>   at 
> org.junit.internal.requests.ClassRequest.createRunner(ClassRequest.java:28)
>   at 
> org.junit.internal.requests.MemoizingRequest.getRunner(MemoizingRequest.java:19)
>   at 
> org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:314)
>   at 
> org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:240)
>   at 
> org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:214)
>   at 
> org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:155)
>   at 
> org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:385)
>   at 
> org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:162)
>   at 
> org.apache.maven.surefire.booter.ForkedBooter.run(ForkedBooter.java:507)
>   at 
> org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:495)
> Caused by: java.lang.ClassNotFoundException: org.hamcrest.SelfDescribing
>   at 
> java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
>   at 
> 

[jira] [Comment Edited] (MNG-7818) [REGRESSION] maven improperly excludes hamcrest-core from junit

2023-06-19 Thread Tamas Cservenak (Jira)


[ 
https://issues.apache.org/jira/browse/MNG-7818?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17734088#comment-17734088
 ] 

Tamas Cservenak edited comment on MNG-7818 at 6/19/23 9:53 AM:
---

Yes, so I think this is the culprit:
* the project imports shrinkwrap BOM 
https://github.com/flowlogix/test-arq-suite/blob/6541eb3f6943bd223b5048f6f9ec392b58a9954c/pom.xml#L333
* that imports Maven parent POM (wrongfully named as BOM in comment) 
https://github.com/shrinkwrap/resolver/blob/master/bom/pom.xml#L135
* hence, this change 
https://github.com/flowlogix/test-arq-suite/blob/6541eb3f6943bd223b5048f6f9ec392b58a9954c/pom.xml#L46-L52
 is not a "workaround" but "followup", given user (even if indirectly) depends 
on Maven parent POM, should implement same steps excplicitly as Maven did: 
re-add hamcrest to test scope, it should not (even if implicitly) rely on Maven 
parent, as Maven 3.6 -> 3.9 migration (what user did) includes Maven upgrade of 
Hamcrest as well.

IMHO, this is not an issue, but a "migration step" needed by users when moving 
from old(er) shrinkwrap to new(er) shrinkwrap (basically migration from maven 
3.6 to 3.9)


was (Author: cstamas):
Yes, so I think this is the culprit:
* the project imports shrinkwrap BOM 
https://github.com/flowlogix/test-arq-suite/blob/6541eb3f6943bd223b5048f6f9ec392b58a9954c/pom.xml#L333
* that imports Maven parent POM (wrongfully named as BOM in comment) 
https://github.com/shrinkwrap/resolver/blob/master/bom/pom.xml#L135
* hence, this change 
https://github.com/flowlogix/test-arq-suite/blob/6541eb3f6943bd223b5048f6f9ec392b58a9954c/pom.xml#L46-L52
 is not a "workaround" but "followup", given user (even if indirectly) depends 
on Maven parent POM, should implement same steps excplicitly as Maven did: 
re-add hamcrest to test scope, it should not (even if implicitly) rely on Maven 
parent, as Maven 3.8 -> 3.9 migration (what user did) includes Maven upgrade of 
Hamcrest as well.

IMHO, this is not an issue, but a "migration step" needed by users when moving 
from old(er) shrinkwrap to new(er) shrinkwrap (basically migration from maven 
3.8 to 3.9)

> [REGRESSION] maven improperly excludes hamcrest-core from junit
> ---
>
> Key: MNG-7818
> URL: https://issues.apache.org/jira/browse/MNG-7818
> Project: Maven
>  Issue Type: Bug
>  Components: Dependencies
>Affects Versions: 3.9.2
> Environment: Any
>Reporter: Lenny Primak
>Priority: Minor
>
> junit 4 now has exclusions for hamcrest-core, which causes 
> ClassNotFouncException
> BTW: upgrading hamcrest-core to 2.2 (without exclusions) works just fine as 
> well
> Traced to https://issues.apache.org/jira/browse/MNG-7670
> {code:java}
> [INFO] Running com.flowlogix.arqsuite.DeploymentOneTest
> [ERROR] Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.088 
> s <<< FAILURE! -- in com.flowlogix.arqsuite.DeploymentOneTest
> [ERROR] com.flowlogix.arqsuite.DeploymentOneTest.initializationError -- Time 
> elapsed: 0.009 s <<< ERROR!
> java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing
>   at java.base/java.lang.ClassLoader.defineClass1(Native Method)
>   at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1013)
>   at 
> java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150)
>   at 
> java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:862)
>   at 
> java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:760)
>   at 
> java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:681)
>   at 
> java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:639)
>   at 
> java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
>   at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
>   at java.base/java.lang.Class.getDeclaredConstructors0(Native Method)
>   at 
> java.base/java.lang.Class.privateGetDeclaredConstructors(Class.java:3473)
>   at java.base/java.lang.Class.getConstructor0(Class.java:3678)
>   at java.base/java.lang.Class.getConstructor(Class.java:2368)
>   at 
> org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:104)
>   at 
> org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:86)
>   at 
> org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:70)
>   at 
> org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:37)
>   at 
> org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:70)
>   at 
> 

[jira] [Comment Edited] (MNG-7818) [REGRESSION] maven improperly excludes hamcrest-core from junit

2023-06-19 Thread Tamas Cservenak (Jira)


[ 
https://issues.apache.org/jira/browse/MNG-7818?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17734076#comment-17734076
 ] 

Tamas Cservenak edited comment on MNG-7818 at 6/19/23 9:17 AM:
---

This issue does not mention this explicitly, but I can imagine one case:
* the project imports maven POM (to reuse distMgmt)
* by looking at refd 
https://github.com/apache/maven/commit/924dbfecf87fa7cc3cc21c840057272321440ea8 
there ARE exclusions added in depMgmt, but also added excplicit test scoped dep 
on "proper" (2.2) hamcrest. All this happened to exclude proper old 1.x 
hamcrest and make sure Maven use 2.2
* This means (given affected project relies on depMgmt imported from maven 
parent POM, if my assumption is true) that affected project simply needs to 
"redo" what in commit above is done: re-add dependency on hamcrest core


was (Author: cstamas):
This issue does not mention this explicitly, but I can imagine one case:
* the project imports maven POM
* by looking at refd 
https://github.com/apache/maven/commit/924dbfecf87fa7cc3cc21c840057272321440ea8 
there ARE exclusions added in depMgmt, but also added excplicit test scoped dep 
on "proper" (2.2) hamcrest. All this happened to exclude proper old 1.x 
hamcrest and make sure Maven use 2.2
* This means (given affected project relies on depMgmt imported from maven 
parent POM, if my assumption is true) that affected project simply needs to 
"redo" what in commit above is done: re-add dependency on hamcrest core

> [REGRESSION] maven improperly excludes hamcrest-core from junit
> ---
>
> Key: MNG-7818
> URL: https://issues.apache.org/jira/browse/MNG-7818
> Project: Maven
>  Issue Type: Bug
>  Components: Dependencies
>Affects Versions: 3.9.2
> Environment: Any
>Reporter: Lenny Primak
>Priority: Minor
>
> junit 4 now has exclusions for hamcrest-core, which causes 
> ClassNotFouncException
> BTW: upgrading hamcrest-core to 2.2 (without exclusions) works just fine as 
> well
> Traced to https://issues.apache.org/jira/browse/MNG-7670
> {code:java}
> [INFO] Running com.flowlogix.arqsuite.DeploymentOneTest
> [ERROR] Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.088 
> s <<< FAILURE! -- in com.flowlogix.arqsuite.DeploymentOneTest
> [ERROR] com.flowlogix.arqsuite.DeploymentOneTest.initializationError -- Time 
> elapsed: 0.009 s <<< ERROR!
> java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing
>   at java.base/java.lang.ClassLoader.defineClass1(Native Method)
>   at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1013)
>   at 
> java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150)
>   at 
> java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:862)
>   at 
> java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:760)
>   at 
> java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:681)
>   at 
> java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:639)
>   at 
> java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
>   at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
>   at java.base/java.lang.Class.getDeclaredConstructors0(Native Method)
>   at 
> java.base/java.lang.Class.privateGetDeclaredConstructors(Class.java:3473)
>   at java.base/java.lang.Class.getConstructor0(Class.java:3678)
>   at java.base/java.lang.Class.getConstructor(Class.java:2368)
>   at 
> org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:104)
>   at 
> org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:86)
>   at 
> org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:70)
>   at 
> org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:37)
>   at 
> org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:70)
>   at 
> org.junit.internal.requests.ClassRequest.createRunner(ClassRequest.java:28)
>   at 
> org.junit.internal.requests.MemoizingRequest.getRunner(MemoizingRequest.java:19)
>   at 
> org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:314)
>   at 
> org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:240)
>   at 
> org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:214)
>   at 
> org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:155)
>   at 
> 

[jira] [Comment Edited] (MNG-7818) Regression: maven improperly excludes hamcrest-core from junit

2023-06-18 Thread Lenny Primak (Jira)


[ 
https://issues.apache.org/jira/browse/MNG-7818?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17733970#comment-17733970
 ] 

Lenny Primak edited comment on MNG-7818 at 6/19/23 12:17 AM:
-

How? Shrinkwrap of course :) It uses maven as a library to produce an 
executable to be tested. Since shrinkwrap (minor version) has updated maven to 
3.9.2, and 3.9.2 was the one started excluding hamcrest, error showed up here.

Here's a link to reproducer:

[https://github.com/flowlogix/test-arq-suite/blob/JUnit4/pom.xml#L46|https://github.com/flowlogix/test-arq-suite/blob/6541eb3f6943bd223b5048f6f9ec392b58a9954c/pom.xml#L46]

If you have docker, run to reproduce
{code:java}
$ mvn verify{code}
if no docker,
{code:java}
$ mvn verify -Ppayara-server-managed {code}
 


was (Author: lprimak):
How? Shrinkwrap of course :) It uses maven as a library to produce an 
executable to be tested. Since shrinkwrap (minor version) has updated maven to 
3.9.2, and 3.9.2 was the one started excluding hamcrest, error showed up here.

Here's a link to reproducer:

[https://github.com/flowlogix/test-arq-suite/blob/JUnit4/pom.xml#L46|https://github.com/flowlogix/test-arq-suite/blob/6541eb3f6943bd223b5048f6f9ec392b58a9954c/pom.xml#L46]

 

 

> Regression: maven improperly excludes hamcrest-core from junit
> --
>
> Key: MNG-7818
> URL: https://issues.apache.org/jira/browse/MNG-7818
> Project: Maven
>  Issue Type: Bug
>  Components: Dependencies
>Affects Versions: 3.9.2
> Environment: Any
>Reporter: Lenny Primak
>Priority: Minor
>
> junit 4 now has exclusions for hamcrest-core, which causes 
> ClassNotFouncException
> BTW: upgrading hamcrest-core to 2.2 (without exclusions) works just fine as 
> well
> Traced to https://issues.apache.org/jira/browse/MNG-7670
> {code:java}
> [INFO] Running com.flowlogix.arqsuite.DeploymentOneTest
> [ERROR] Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.088 
> s <<< FAILURE! -- in com.flowlogix.arqsuite.DeploymentOneTest
> [ERROR] com.flowlogix.arqsuite.DeploymentOneTest.initializationError -- Time 
> elapsed: 0.009 s <<< ERROR!
> java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing
>   at java.base/java.lang.ClassLoader.defineClass1(Native Method)
>   at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1013)
>   at 
> java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150)
>   at 
> java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:862)
>   at 
> java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:760)
>   at 
> java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:681)
>   at 
> java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:639)
>   at 
> java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
>   at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
>   at java.base/java.lang.Class.getDeclaredConstructors0(Native Method)
>   at 
> java.base/java.lang.Class.privateGetDeclaredConstructors(Class.java:3473)
>   at java.base/java.lang.Class.getConstructor0(Class.java:3678)
>   at java.base/java.lang.Class.getConstructor(Class.java:2368)
>   at 
> org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:104)
>   at 
> org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:86)
>   at 
> org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:70)
>   at 
> org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:37)
>   at 
> org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:70)
>   at 
> org.junit.internal.requests.ClassRequest.createRunner(ClassRequest.java:28)
>   at 
> org.junit.internal.requests.MemoizingRequest.getRunner(MemoizingRequest.java:19)
>   at 
> org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:314)
>   at 
> org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:240)
>   at 
> org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:214)
>   at 
> org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:155)
>   at 
> org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:385)
>   at 
> org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:162)
>   at 
> org.apache.maven.surefire.booter.ForkedBooter.run(ForkedBooter.java:507)
>   at 
>