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, [email protected] 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 <[email protected]>
To:     [email protected],
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, [email protected] 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: [email protected]
skype: ronaldmwheeler
phone: 866-970-2435, ext 102


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to