Please refresh my memory on NAR dependencies

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

Please refresh my memory on NAR dependencies

Peter Wicks (pwicks)
For NIFI-4465 I want the nifi-poi-bundle to include a Maven dependency on nifi-record-serialization-services. So I start by adding the dependency to the pom.xml.

<dependency>
       <groupId>org.apache.nifi</groupId>
       <artifactId>nifi-record-serialization-services</artifactId>
</dependency>

I've tried several variations on this, with version numbers, putting it at higher pom levels, including it in the nifi-nar-bundles pom and marking it as included, etc...

Throughout all this compiling is no problem, and all my unit tests run correctly. But when I try to start NiFi I immediately get Class not found exceptions from the nifi-poi classes related to the nifi-record-serialization libraries.

I feel like I've run into this in the past, and it was due to how NAR's work. Can't remember though.

Help would be appreciated!

Thanks,
  Peter
Reply | Threaded
Open this post in threaded view
|

Re: Please refresh my memory on NAR dependencies

Matt Burgess-2
Do you have a hard requirement on the implementations in
nifi-record-serialization-services? Otherwise, the existing examples
have the processor POM pointing at the following:

<dependency>
    <groupId>org.apache.nifi</groupId>
    <artifactId>nifi-record-serialization-service-api</artifactId>
</dependency>

which is the API JAR I think. If you need the implementations behind
it, you will probably need to declare that as a parent (not a
dependency) and perhaps still use the API JAR (though I'm guessing
about the latter).

Regards,
Matt


On Sun, Oct 15, 2017 at 10:27 PM, Peter Wicks (pwicks)
<[hidden email]> wrote:

> For NIFI-4465 I want the nifi-poi-bundle to include a Maven dependency on nifi-record-serialization-services. So I start by adding the dependency to the pom.xml.
>
> <dependency>
>        <groupId>org.apache.nifi</groupId>
>        <artifactId>nifi-record-serialization-services</artifactId>
> </dependency>
>
> I've tried several variations on this, with version numbers, putting it at higher pom levels, including it in the nifi-nar-bundles pom and marking it as included, etc...
>
> Throughout all this compiling is no problem, and all my unit tests run correctly. But when I try to start NiFi I immediately get Class not found exceptions from the nifi-poi classes related to the nifi-record-serialization libraries.
>
> I feel like I've run into this in the past, and it was due to how NAR's work. Can't remember though.
>
> Help would be appreciated!
>
> Thanks,
>   Peter
Reply | Threaded
Open this post in threaded view
|

RE: [EXT] Re: Please refresh my memory on NAR dependencies

Peter Wicks (pwicks)
Matt,

I am trying to re-use most of CSVUtils, including most of the property descriptors and CSVUtils.createCSVFormat.

It seemed like a waste to duplicate the entire class. I can try making it the parent, what are the implications if I do that?

Thanks,
  Peter

-----Original Message-----
From: Matt Burgess [mailto:[hidden email]]
Sent: Monday, October 16, 2017 10:58 AM
To: [hidden email]
Subject: [EXT] Re: Please refresh my memory on NAR dependencies

Do you have a hard requirement on the implementations in nifi-record-serialization-services? Otherwise, the existing examples have the processor POM pointing at the following:

<dependency>
    <groupId>org.apache.nifi</groupId>
    <artifactId>nifi-record-serialization-service-api</artifactId>
</dependency>

which is the API JAR I think. If you need the implementations behind it, you will probably need to declare that as a parent (not a
dependency) and perhaps still use the API JAR (though I'm guessing about the latter).

Regards,
Matt


On Sun, Oct 15, 2017 at 10:27 PM, Peter Wicks (pwicks) <[hidden email]> wrote:

> For NIFI-4465 I want the nifi-poi-bundle to include a Maven dependency on nifi-record-serialization-services. So I start by adding the dependency to the pom.xml.
>
> <dependency>
>        <groupId>org.apache.nifi</groupId>
>        <artifactId>nifi-record-serialization-services</artifactId>
> </dependency>
>
> I've tried several variations on this, with version numbers, putting it at higher pom levels, including it in the nifi-nar-bundles pom and marking it as included, etc...
>
> Throughout all this compiling is no problem, and all my unit tests run correctly. But when I try to start NiFi I immediately get Class not found exceptions from the nifi-poi classes related to the nifi-record-serialization libraries.
>
> I feel like I've run into this in the past, and it was due to how NAR's work. Can't remember though.
>
> Help would be appreciated!
>
> Thanks,
>   Peter
Reply | Threaded
Open this post in threaded view
|

Re: [EXT] Re: Please refresh my memory on NAR dependencies

Koji Kawamura-2
Peter, Matt,

If the goal is sharing org.apache.nifi.csv.CSVUtils among modules, an
alternative approach is moving CSVUtils to nifi-standard-record-util
and add ordinary JAR dependency from nifi-poi-processors. How do you
think?

Thanks,
Koji

On Mon, Oct 16, 2017 at 12:17 PM, Peter Wicks (pwicks)
<[hidden email]> wrote:

> Matt,
>
> I am trying to re-use most of CSVUtils, including most of the property descriptors and CSVUtils.createCSVFormat.
>
> It seemed like a waste to duplicate the entire class. I can try making it the parent, what are the implications if I do that?
>
> Thanks,
>   Peter
>
> -----Original Message-----
> From: Matt Burgess [mailto:[hidden email]]
> Sent: Monday, October 16, 2017 10:58 AM
> To: [hidden email]
> Subject: [EXT] Re: Please refresh my memory on NAR dependencies
>
> Do you have a hard requirement on the implementations in nifi-record-serialization-services? Otherwise, the existing examples have the processor POM pointing at the following:
>
> <dependency>
>     <groupId>org.apache.nifi</groupId>
>     <artifactId>nifi-record-serialization-service-api</artifactId>
> </dependency>
>
> which is the API JAR I think. If you need the implementations behind it, you will probably need to declare that as a parent (not a
> dependency) and perhaps still use the API JAR (though I'm guessing about the latter).
>
> Regards,
> Matt
>
>
> On Sun, Oct 15, 2017 at 10:27 PM, Peter Wicks (pwicks) <[hidden email]> wrote:
>> For NIFI-4465 I want the nifi-poi-bundle to include a Maven dependency on nifi-record-serialization-services. So I start by adding the dependency to the pom.xml.
>>
>> <dependency>
>>        <groupId>org.apache.nifi</groupId>
>>        <artifactId>nifi-record-serialization-services</artifactId>
>> </dependency>
>>
>> I've tried several variations on this, with version numbers, putting it at higher pom levels, including it in the nifi-nar-bundles pom and marking it as included, etc...
>>
>> Throughout all this compiling is no problem, and all my unit tests run correctly. But when I try to start NiFi I immediately get Class not found exceptions from the nifi-poi classes related to the nifi-record-serialization libraries.
>>
>> I feel like I've run into this in the past, and it was due to how NAR's work. Can't remember though.
>>
>> Help would be appreciated!
>>
>> Thanks,
>>   Peter
Reply | Threaded
Open this post in threaded view
|

RE: [EXT] Re: Please refresh my memory on NAR dependencies

Peter Wicks (pwicks)
I gave this a shot and it worked well for me.
https://github.com/apache/nifi/pull/2194

-----Original Message-----
From: Koji Kawamura [mailto:[hidden email]]
Sent: Monday, October 16, 2017 12:03 PM
To: dev <[hidden email]>
Subject: Re: [EXT] Re: Please refresh my memory on NAR dependencies

Peter, Matt,

If the goal is sharing org.apache.nifi.csv.CSVUtils among modules, an alternative approach is moving CSVUtils to nifi-standard-record-util and add ordinary JAR dependency from nifi-poi-processors. How do you think?

Thanks,
Koji

On Mon, Oct 16, 2017 at 12:17 PM, Peter Wicks (pwicks) <[hidden email]> wrote:

> Matt,
>
> I am trying to re-use most of CSVUtils, including most of the property descriptors and CSVUtils.createCSVFormat.
>
> It seemed like a waste to duplicate the entire class. I can try making it the parent, what are the implications if I do that?
>
> Thanks,
>   Peter
>
> -----Original Message-----
> From: Matt Burgess [mailto:[hidden email]]
> Sent: Monday, October 16, 2017 10:58 AM
> To: [hidden email]
> Subject: [EXT] Re: Please refresh my memory on NAR dependencies
>
> Do you have a hard requirement on the implementations in nifi-record-serialization-services? Otherwise, the existing examples have the processor POM pointing at the following:
>
> <dependency>
>     <groupId>org.apache.nifi</groupId>
>     <artifactId>nifi-record-serialization-service-api</artifactId>
> </dependency>
>
> which is the API JAR I think. If you need the implementations behind
> it, you will probably need to declare that as a parent (not a
> dependency) and perhaps still use the API JAR (though I'm guessing about the latter).
>
> Regards,
> Matt
>
>
> On Sun, Oct 15, 2017 at 10:27 PM, Peter Wicks (pwicks) <[hidden email]> wrote:
>> For NIFI-4465 I want the nifi-poi-bundle to include a Maven dependency on nifi-record-serialization-services. So I start by adding the dependency to the pom.xml.
>>
>> <dependency>
>>        <groupId>org.apache.nifi</groupId>
>>        <artifactId>nifi-record-serialization-services</artifactId>
>> </dependency>
>>
>> I've tried several variations on this, with version numbers, putting it at higher pom levels, including it in the nifi-nar-bundles pom and marking it as included, etc...
>>
>> Throughout all this compiling is no problem, and all my unit tests run correctly. But when I try to start NiFi I immediately get Class not found exceptions from the nifi-poi classes related to the nifi-record-serialization libraries.
>>
>> I feel like I've run into this in the past, and it was due to how NAR's work. Can't remember though.
>>
>> Help would be appreciated!
>>
>> Thanks,
>>   Peter