karaf-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From David Jencks <david_jen...@yahoo.com>
Subject Re: Proposal for pax url aether config
Date Wed, 07 Mar 2012 15:53:25 GMT
You have to be a little more careful testing this.

As I said, although startup.properties contains mvn urls, they are not interpreted using the
aether url handler, there's some code that directly finds the files in the system repo.

So anything in startup.properties won't be copied into the local maven repo and needs to be
in system repo.

Stuff in other features will get copied into the local maven repo aether is configured for.

And of course you have to switch the aether configuration from how it was in trunk to how
you want it to be, with the local maven repo being configured as aether's local maven repo.

------

I have no problem with encouraging people to use aether for easy provisioning but I think
there should be a way beyond startup bundles to avoid dragging aether in for every bundle
you start and just use the bundles you have already put in the system repo without looking
anywhere else.

-----

I also think that these "fake" mvn urls in startup.properties are too confusing and we should
use a different prefix.  I put them in and they are better than using the path in the system
repo but I think they have successfully confused you :-)  I don't really see what would be
wrong with a flat system repo so you'd just give the file name and then using mvn urls for
stuff that is fetches through aether and stays in the local maven repo.

thanks
david jencks

On Mar 7, 2012, at 2:48 AM, Jean-Baptiste Onofré wrote:

> I was quite surprised with the latest David's e-mail, and quite sceptic regarding the
pax-url-aether code.
> 
> So I decided to make a test.
> 
> I removed all Karaf artifact from my .m2/repository:
> 
> rm -fr ~/.m2/repository/org/apache/karaf
> 
> In a fresh Karaf trunk build, I can see the Karaf artifact in the system directory:
> 
> ls -l system/org/apache/karaf/
> total 36
> drwxr-xr-x  5 jbonofre jbonofre 4096 2012-03-07 07:35 deployer
> drwxr-xr-x  6 jbonofre jbonofre 4096 2012-03-07 07:35 diagnostic
> drwxr-xr-x  9 jbonofre jbonofre 4096 2012-03-07 07:35 features
> drwxr-xr-x  5 jbonofre jbonofre 4096 2012-03-07 07:35 instance
> drwxr-xr-x  5 jbonofre jbonofre 4096 2012-03-07 07:35 jaas
> drwxr-xr-x  4 jbonofre jbonofre 4096 2012-03-07 07:35 management
> drwxr-xr-x  5 jbonofre jbonofre 4096 2012-03-07 07:35 region
> drwxr-xr-x 10 jbonofre jbonofre 4096 2012-03-07 07:35 shell
> drwxr-xr-x  5 jbonofre jbonofre 4096 2012-03-07 07:35 system
> 
> In the etc/org.ops4j.pax.url.mvn.cfg, I setup:
> 
> org.ops4j.pax.url.mvn.defaultLocalRepoAsRemote=false
> 
> And I started my Karaf:
> 
> cd bin
> ./karaf
>        __ __                  ____
>       / //_/____ __________ _/ __/
>      / ,<  / __ `/ ___/ __ `/ /_
>     / /| |/ /_/ / /  / /_/ / __/
>    /_/ |_|\__,_/_/   \__,_/_/
> 
>  Apache Karaf (3.0.0-SNAPSHOT)
> 
> Hit '<tab>' for a list of available commands
> and '[cmd] --help' for help on a specific command.
> Hit '<ctrl-d>' or 'system:shutdown' to shutdown Karaf.
> 
> karaf@root()> la
> START LEVEL 100 , List Threshold: 0
>   ID   State         Blueprint      Level  Name
> [   0] [Active     ] [            ] [    0] System Bundle (4.0.2)
> [   1] [Active     ] [            ] [    5] OPS4J Pax Url - wrap: (1.4.0.SNAPSHOT)
> [   2] [Active     ] [            ] [    5] OPS4J Pax Url - aether: (1.4.0.SNAPSHOT)
> [   3] [Active     ] [            ] [    5] OPS4J Pax Swissbox :: Bnd Utils (1.5.0)
> ....
> [  69] [Active     ] [Created     ] [   30] Apache Karaf :: Jaas :: Command (3.0.0.SNAPSHOT)
> karaf@root()>
> 
> So all is started correctly.
> 
> Now I take a look in my .m2/repository:
> 
> ls -l ~/.m2/repository/org/apache/karaf
> ls: cannot access /home/jbonofre/.m2/repository/org/apache/karaf: No such file or directory
> 
> No it means that NO artifact has been copied from the system repository to the local
repository.
> 
> So, I don't see any duplication here, and not requirement to have a local repo even using
the defaultLocalRepoAsRemote set to false.
> 
> I removed all maven-metadata-local.xml from the system repo:
> 
> cd system
> find . -name "maven-metadata-local.xml" -exec rm {} \;
> 
> and restarted Karaf.
> 
> In that case, the local repo has not been updated (org/apache/karaf is still not present),
but the Karaf system repo has been updated with the SNAPSHOT from Central (which the expected
behavior).
> 
> Now, I populated my local repo (with a complete mvn clean install -DskipTests in the
Karaf workspace).
> 
> I removed the Karaf artifacts from the system repo:
> 
> rm -fr system/org/apache/karaf
> 
> and Karaf doesn't start:
> Bundle listed in startup.properties configuration not found: mvn:org.apache.karaf.shell/org.apache.karaf.shell.commands/3.0.0-SNAPSHOT
> Bundle listed in startup.properties configuration not found: mvn:org.apache.karaf.system/org.apache.karaf.system.core/3.0.0-SNAPSHOT
> Bundle listed in startup.properties configuration not found: mvn:org.apache.karaf.features/org.apache.karaf.features.core/3.0.0-SNAPSHOT
> Bundle listed in startup.properties configuration not found: mvn:org.apache.karaf.region/org.apache.karaf.region.core/3.0.0-SNAPSHOT
> Bundle listed in startup.properties configuration not found: mvn:org.apache.karaf.jaas/org.apache.karaf.jaas.config/3.0.0-SNAPSHOT
> Bundle listed in startup.properties configuration not found: mvn:org.apache.karaf.features/org.apache.karaf.features.command/3.0.0-SNAPSHOT
> Bundle listed in startup.properties configuration not found: mvn:org.apache.karaf.jaas/org.apache.karaf.jaas.modules/3.0.0-SNAPSHOT
> Bundle listed in startup.properties configuration not found: mvn:org.apache.karaf.shell/org.apache.karaf.shell.console/3.0.0-SNAPSHOT
> Bundle listed in startup.properties configuration not found: mvn:org.apache.karaf.shell/org.apache.karaf.shell.services/3.0.0-SNAPSHOT
> Bundle listed in startup.properties configuration not found: mvn:org.apache.karaf.system/org.apache.karaf.system.commands/3.0.0-SNAPSHOT
> Bundle listed in startup.properties configuration not found: mvn:org.apache.karaf.shell/org.apache.karaf.shell.bundles/3.0.0-SNAPSHOT
> Could not create framework: java.lang.Exception: Aborting due to missing startup bundles
> java.lang.Exception: Aborting due to missing startup bundles
> 
> So I tried to remove artifacts no in the startup.properties:
> 
> rm -fr system/org/apache/karaf/shell/org.apache.karaf.shell.dev
> 
> and restart Karaf:
> 
> dev:watch command is there
> 
> the system repo has been updated with the artifact from central (I have to check if it's
really the case o does it took the one from local repo).
> 
> Maybe I'm wrong, but my conclusion is that:
> - we can stay with pax-url-aether
> - we have a "correct" behavior as it means that we have a kind of "merge" between the
system repo and the local repo
> - the defaultLocalRepoAsRemote could be set to false by default
> 
> I'm digging around that and send you an update asap.
> 
> Regardss
> JB
> 
> On 03/07/2012 08:49 AM, Christian Schneider wrote:
>> I think it makes sense to stay with aether. It makes our artifact
>> resolution more standard. So people with maven knowledge understand what
>> happens.
>> Another reason why I would like to stay with aether is that it minimizes
>> the code we have to maintain and that we automatically participate in
>> advancements in
>> new maven versions.
>> 
>> I did not realize that all artifacts are copied to the local repo but on
>> the other hand I don´t think it is a big problem. We are only talking
>> about 10 MB after all.
>> We could propose an enhancement to aether to mark a repository as "near"
>> or "do not cache". This could allow to mark the system dir in that way
>> and should
>> then trigger maven to just use the artifacts from there. Perhaps aether
>> could even detect automatically that a repo is on a file location and
>> default to that setting.
>> Till we have this enhancement I think it would be ok to live with the
>> copied artifacts.
>> 
>> Yesterday JB and I discussed that using the default local repo allows to
>> build a kind of network distribution that is very small. For companies
>> that have their
>> own maven repo this is probably very interesting.
>> 
>> Christian
>> 
>> Am 07.03.2012 07:48, schrieb Guillaume Nodet:
>>> The maven url handler has been deprecated because there was no foreseen
>>> problems with it and aether seemed a good replacement for it. We could
>>> easily say we want to maintain it and I think that would un-deprecate
>>> it ;-)
>>> 
>>> 
>> 
> 
> -- 
> Jean-Baptiste Onofré
> jbonofre@apache.org
> http://blog.nanthrax.net
> Talend - http://www.talend.com


Mime
View raw message