Ok, I might give that a try

Thank you for your help Ron

Alejandro Endo | Software Designer/Concepteur de logiciels 





From:   Ron Wheeler <rwhee...@artifact-software.com>
To:     users@maven.apache.org, 
Date:   2014-11-25 09:39 PM
Subject:        Re: Maven use for integration



On 25/11/2014 4:26 PM, alejandro.e...@grassvalley.com wrote:
> No, not a zip. I just need the bundles to be in the file system so that
> when the server packaging starts, they get packaged.
>
> The job of the integrator is just to download the artifacts from nexus 
and
> leave them in the filesystem of the server's image. The fact that i want
> to use the info in the poms to minimize maintenance of the integration
> list is kind of orthogonal, i could do everything just with wget, but i
> would need a list of every single bundle to download.
>
> Maybe a bit of description of how building the server work will make it
> clearer. We download all the bundles from nexus (this is the part I do
> with maven), compile kernel drivers unrelated to the bundles, prepare OS
> configuration scripts, etc etc and then the whole system is packaged 
into
> an image that gets deployed to the client. This packaging into an image
> has nothing to do with maven, only the artifact download is done by 
maven
> at the server creation job (and not even for all the artifacts, just for
> OSGi bundle artifacts)
>
> And yes, you're right that for non-osgi artifacts this wouldn't work due
> to the classloader, so I definitely understand the default behaviour of
> maven, but this is in an OSGi context. Is there any way to bypass this
> core behaviour? a system property, flag?? it is very convenient to do
> integrations with maven due to the rich info in the poms. But obviously,
> the pom data could be used outside of maven so maybe what I'm missing is 
a
> different tool altogether.
>
> Another option would be a maven-plugin that creates its own dependency
> graph and doesn't rely on the one provided by maven core, which supports
> only a single version of a given artifact (at least that's what it looks
> like)



Yes. that is what I was suggesting or build something that uses the core 
bits of Maven that you need.

Ron

>
> Alejandro Endo | Software Designer/Concepteur de logiciels
>
>
>
>
> From:   Ron Wheeler <rwhee...@artifact-software.com>
> To:     users@maven.apache.org,
> Date:   2014-11-25 03:07 PM
> Subject:        Re: Maven use for integration
>
>
>
> It is still a bit unclear about what you will end up with if your idea
> works.
> Are you just hoping to get a zip file of OSGi artifacts that you can
> unzip to deploy?
>
> Multiple versions of non-OSGi artifacts will not work since the
> classloader will only load the first version that it finds.
>
>
> On 25/11/2014 1:45 PM, alejandro.e...@grassvalley.com wrote:
>> Hi Ron,
>> #1. I don't understand your question. You mean the poms of the 
artifacts
>> deployed in nexus? they each have their own pom and instructions on how
> to
>> build itself, just like a regular maven artifact
>> So I have an artifact A that gets deployed to nexus with groupId 
foo.bar
>> and artifactId A and version 1.0 and then six months later A gets
> updated
>> to version 2.0
>> All this has nothing to do with integration
>>
>> Now the integration job will say, bring all the artifacts and their
>> dependencies to be able to run. One of them will be A 1.0.
>> Once a 2.0 is released, i don't want to integrate ONLY 2.0. I want to
>> integrate 1.0 and 2.0. So in my integration pom i have two 
dependencies,
>> one foo.bar:A:1.0 and another dependency foo.bar:A:2.0. This is were
> maven
>> core complains and ends up resolving one over the other, hence when i 
do
> a
>> copy-dependencies it only ends up integrating one of them
> So the 2 versions of A are on a list that you manually maintain in an
> integration file.
> Could you not keep that outside a pom and just get each version from the
> repo and use the pom of foo.bar:A:1.0 and foo.bar:A:2.0 to get their
> respective dependencies to build a list of the other artifacts. As long
> as you are talking about OSGi, you are OK.
>> #2. Yes, I am. The problem is that via the nexus API there's no way to
>> have a list of ONLY entry points where i can say explicitly in a list
>> (that i'm trying to keep as small as possible) integrate A and that
> would
>> imply B and C if A depends on B and C. When I do it with maven, in my
>> integration pom I only declare a dependency on A and the dependency
> plugin
>> will copy transitive dependencies. This allows me to keep the manually
>> maintained list as small as possible and never forgetting to update it
>> when i introduce new dependencies since those new dependencies will be
>> pulled by the dependency plugin just because the POM already contains
> the
>> relationship information
> So once you have resolved the dependencies, you can get the Artifacts
> and repeat the resolution using these new dependencies eliminating
> duplicates if you find any.
>
>> I hope everything is clearer now, let me know
> You can use the Maven code to build the dependency resolution but you
> will have to glue this together with some top level code that reads your
> list of "seed" artifacts including the multiple versions of the ones
> that you care about and probably something to eliminate duplicate
> transitive dependencies and resolve version conflicts for non-OSGi
> artifacts if these are part of your requirement.
>
> It is hard to see how Maven alone is going to be happy building
> Artifacts that contain multiple versions of jar files without some help
> to let it know when it is OK and when it will lead to grief.
>
>
>> Thanks for replying
>>
>>
>> Alejandro Endo | Software Designer/Concepteur de logiciels
>>
>>
>>
>>
>> From:   Ron Wheeler <rwhee...@artifact-software.com>
>> To:     users@maven.apache.org,
>> Date:   2014-11-25 01:33 PM
>> Subject:        Re: Maven use for integration
>>
>>
>>
>> Since you are not getting any responses, let me ask some questions to
>> get some more details on the table.
>>
>> 1) Where is the definitive single source of dependency info that you 
use
>> to create the GAV ids for Nexus? How can a single pom reference 2
>> versions of an artifact?
>>
>> 2) Are you aware of the API for Nexus? Can you use this to get the
>> artifacts once you have the list of artifacts?
>>
>> Perhaps these answers will stimulate some ideas.
>> Ron
>>
>> On 25/11/2014 10:55 AM, alejandro.e...@grassvalley.com wrote:
>>> Hello everyone,
>>>
>>> I wanted to ask what you guys though about using maven as an
> integration
>>> tool. Is it out of the scope of maven? is anyone else doing this? What
> I
>>> mean by integration is that the artifacts are built (also by maven but
>> in
>>> other jobs) and deployed to nexus, but I still need to download them
> all
>>> to a server for deployment.
>>> The build of this server invokes maven and I hooked to it via a pom
> that
>>> points to some artifacts that serve as an entry point to the 
dependency
>>> graph and then use the dependency:copy-dependencies goal. The point of
>>> this was to leverage the dependency information available in poms so I
>>> didn't have to keep a list of ALL the artifacts needed (osgi bundles
>> BTW),
>>> just of an entry point for maven to crawl the graph and pull
> everything.
>>> The problem I'm encountering that tells me maybe Maven is not meant 
for
>>> this is that I need to pull two artifacts where only the version is
>>> different (since in OSGi both can coexist just fine) but maven chooses
>>> only one and the other one doesn't get integrated. So, are there ways
> to
>>> force maven to not drop the second version when resolving its model or
>> am
>>> I just stretching what maven can do? if so, are there any other tools
>> that
>>> leverage pom information to download artifacts from a maven repo? i
>> don't
>>> want to have to maintain that dependency information in two different
>>> places
>>>
>>> Thank you,
>>>
>>> Alejandro Endo | Software Designer/Concepteur de logiciels
>>>
>>> DISCLAIMER:
>>> Privileged and/or Confidential information may be contained in this
>>> message. If you are not the addressee of this message, you may not
>>> copy, use or deliver this message to anyone. In such event, you
>>> should destroy the message and kindly notify the sender by reply
>>> e-mail. It is understood that opinions or conclusions that do not
>>> relate to the official business of the company are neither given
>>> nor endorsed by the company.
>>> Thank You.
>>>
>


-- 
Ron Wheeler
President
Artifact Software Inc
email: rwhee...@artifact-software.com
skype: ronaldmwheeler
phone: 866-970-2435, ext 102


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@maven.apache.org
For additional commands, e-mail: users-h...@maven.apache.org



DISCLAIMER:
Privileged and/or Confidential information may be contained in this
message. If you are not the addressee of this message, you may not
copy, use or deliver this message to anyone. In such event, you
should destroy the message and kindly notify the sender by reply
e-mail. It is understood that opinions or conclusions that do not
relate to the official business of the company are neither given
nor endorsed by the company.
Thank You.

Reply via email to