You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@nifi.apache.org by "Kevin Doran (Jira)" <ji...@apache.org> on 2023/03/08 20:31:00 UTC

[jira] [Commented] (NIFI-11217) NiFi NAR Maven Plugin fails to build external NARs with transitive, provided dependencies.

    [ https://issues.apache.org/jira/browse/NIFI-11217?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17698075#comment-17698075 ] 

Kevin Doran commented on NIFI-11217:
------------------------------------

Credit to Julien G for reporting and helping us identify the issue on the Apache NiFi Slack:
https://apachenifi.slack.com/archives/C0L9S92JY/p1676561597970849 

> NiFi NAR Maven Plugin fails to build external NARs with transitive, provided dependencies.
> ------------------------------------------------------------------------------------------
>
>                 Key: NIFI-11217
>                 URL: https://issues.apache.org/jira/browse/NIFI-11217
>             Project: Apache NiFi
>          Issue Type: Bug
>          Components: Tools and Build
>    Affects Versions: nifi-nar-maven-plugin-1.4.0
>            Reporter: Kevin Doran
>            Assignee: Kevin Doran
>            Priority: Major
>             Fix For: nifi-nar-maven-plugin-1.5.0
>
>          Time Spent: 0.5h
>  Remaining Estimate: 0h
>
> It appears that the NAR maven plugin was benefiting from behavior in older version of the maven-dependency-tree library that would resolve artifacts in addition to poms when crawling dependendncies. This guaranteed that they would be in the local Maven repository/cache when in the Extension Documentation generation phase of NAR building.
> Version 1.4.0 of the plugin upgraded maven-dependency-tree to 3.2.0, which included this behavior change to only download poms:
> https://github.com/apache/maven-dependency-tree/commit/b330fa93b70e35c70a8afa75f0404cf47d5935d6 
> This broke building NARs that are external from the Apache NiFi repository/project that inherit from (or depend on) NiFi NARs that have transitive dependencies marked as provided, because the Extension Documentation generation needs the full artifact resolved in order to create a working ClassLoader. Not having artifacts resolved results in error messages such as:
> {noformat}
> [INFO] --- nifi-nar-maven-plugin:1.4.0:nar (default-nar) @ nifi-example-processors-nar ---
> [INFO] Copying nifi-example-processors-1.0.jar to /Users/kdoran/dev/code/nifi-dependency-example/nifi-inherits-processor-bundle/nifi-example-processors-nar/target/classes/META-INF/bundled-dependencies/nifi-example-processors-1.0.jar
> [INFO] Generating documentation for NiFi extensions in the NAR...
> [INFO] Found NAR dependency of org.apache.nifi:nifi-standard-services-api-nar:nar:1.20.0:compile
> [INFO] Found NAR dependency of org.apache.nifi:nifi-jetty-bundle:nar:1.20.0:compile
> [INFO] Found a dependency on version 1.20.0 of NiFi API
> [ERROR] Could not generate extensions' documentation
> org.apache.maven.plugin.MojoExecutionException: Failed to create Extension Documentation
>     at org.apache.nifi.NarMojo.generateDocumentation (NarMojo.java:534)
>     at org.apache.nifi.NarMojo.execute (NarMojo.java:505)
>     at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:210)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
>     at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
>     at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
>     at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
>     at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
>     at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
>     at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
>     at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
>     at org.apache.maven.cli.MavenCli.execute (MavenCli.java:972)
>     at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:293)
>     at org.apache.maven.cli.MavenCli.main (MavenCli.java:196)
>     at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
>     at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
>     at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
>     at java.lang.reflect.Method.invoke (Method.java:566)
>     at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
>     at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
>     at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
>     at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
> Caused by: org.apache.maven.plugin.MojoExecutionException: Could not resolve local dependency org.apache.nifi:nifi-framework-api:jar:1.20.0
>     at org.apache.nifi.extension.definition.extraction.ExtensionClassLoaderFactory.getProvidedArtifact (ExtensionClassLoaderFactory.java:224)
>     at org.apache.nifi.extension.definition.extraction.ExtensionClassLoaderFactory.createProvidedEntitiesClassLoader (ExtensionClassLoaderFactory.java:258)
>     at org.apache.nifi.extension.definition.extraction.ExtensionClassLoaderFactory.createClassLoader (ExtensionClassLoaderFactory.java:116)
>     at org.apache.nifi.extension.definition.extraction.ExtensionClassLoaderFactory.createClassLoader (ExtensionClassLoaderFactory.java:122)
>     at org.apache.nifi.extension.definition.extraction.ExtensionClassLoaderFactory.createClassLoader (ExtensionClassLoaderFactory.java:122)
>     at org.apache.nifi.extension.definition.extraction.ExtensionClassLoaderFactory.createExtensionClassLoader (ExtensionClassLoaderFactory.java:101)
>     at org.apache.nifi.NarMojo.generateDocumentation (NarMojo.java:531)
>     at org.apache.nifi.NarMojo.execute (NarMojo.java:505)
>     at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:210)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
>     at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
>     at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
>     at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
>     at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
>     at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
>     at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
>     at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
>     at org.apache.maven.cli.MavenCli.execute (MavenCli.java:972)
>     at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:293)
>     at org.apache.maven.cli.MavenCli.main (MavenCli.java:196)
>     at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
>     at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
>     at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
>     at java.lang.reflect.Method.invoke (Method.java:566)
>     at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
>     at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
>     at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
>     at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
> {noformat}
> Specifically, our code needs to be updated so that artifacts are resolved, using remote repositories if necessary, which they are not in the current plugin implementation.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)