It depends of the execution phase. Regards JB
On 01/19/2012 02:03 PM, Michael Täschner wrote:
Hi JB, yes I use "pom" packaging. Only difference may be that I also have buildhelper-maven-plugin configured with "attach-artifact" of the feature.xml so it can alternatively be resolved in karaf when adding feature repository url instead of deploying the kar file. Regards, Michael 2012/1/19 Jean-Baptiste Onofré <[email protected] <mailto:[email protected]>> Do you use the pom packaging ? Regards JB On 01/19/2012 01:44 PM, Michael Täschner wrote: Hi JB, I played around with the plugin configuration and set the "resourcesDir" to a path that does not exist (${project.build.directory}/__doesNotExist). As a result the feature.xml from within /target/classes is now ignored. I know it's a hack - I would have rather have the option to omit content of target/classes or have the filtered feature.xml located somewhere else, but it works for the moment. Best Regards, Michael 2012/1/19 Jean-Baptiste Onofré <[email protected] <mailto:[email protected]> <mailto:[email protected] <mailto:[email protected]>>> Hi Michael, sorry I didn't see your latest message. Let me try a test case on my box. Regards JB On 01/19/2012 01:12 PM, Michael Täschner wrote: Hi JB, have you read my previous response? Using the "create-kar" of feature-maven-plugin of karaf 2.2.x as you described above, adds the feature.xml twice to the resulting kar file. As a result two feature repositories are registered in karaf. Right now karaf-maven-plugin 3.0.0-SNAPSHOT seems to be broken so I tried again with the feature-maven-plugin, but the problem persists. Do you have an idea how to prevent this duplication ? Thanks and Regards, Michael Am 13. Januar 2012 11:18 schrieb Michael Täschner <[email protected] <mailto:[email protected]> <mailto:m.taeschner@__googlemail.com <mailto:[email protected]>> <mailto:m.taeschner@ <mailto:m.taeschner@>__googlema__il.com <http://googlemail.com> <mailto:m.taeschner@__googlemail.com <mailto:[email protected]>>>>: Hi JB, yes I also got the create-kar goal of feature-maven-plugin of karaf 2.2.x working as you describe above. As a result though the feature.xml is added twice to the resulting kar file, once in root folder (because of being available in target/classes) and secondly within the /repository path because it is defined as feature description within the feature.xml. As a result on deployment the feature url/repository is added twice to the karaf container which was my original question. Thanks and Regards, Michael 2012/1/12 Jean-Baptiste Onofré <[email protected] <mailto:[email protected]> <mailto:[email protected] <mailto:[email protected]>> <mailto:[email protected] <mailto:[email protected]> <mailto:[email protected] <mailto:[email protected]>>>> Hi Michael, Using features-maven-plugin 2.2.5, you have to do something like 1. The define a filtered-resources folder in the resources containing the features.xml file: <build> <resources> <resource> <directory>src/main/filtered-______resources</directory> <filtered>true</filtered> </resource> </resources> [...] 2. As the packaging is pom (<packaging>pom</packaging>), we need to execute the dependency plugin "explicitly": <plugins> <plugin> <groupId>org.apache.maven.______plugins</groupId> <artifactId>maven-resources-______plugin</artifactId> <executions> <execution> <id>filter</id> <phase>generate-resources</______phase> <goals> <goal>resources</goal> </goals> </execution> </executions> </plugin> 3. Now you can define the featuresFile in the create-kar goal on the process-resources phase: <plugin> <groupId>org.apache.karaf.______tooling</groupId> <artifactId>features-maven-______plugin</artifactId> <version>2.2.5</version> <executions> <execution> <id>create-kar</id> <phase>process-resources</______phase> <goals> <goal>create-kar</goal> </goals> <configuration> <featuresFile>${basedir}/______target/classes/features.xml</______featuresFile> </configuration> </execution> </executions> </plugin> Regards JB On 01/12/2012 02:12 PM, Michael Täschner wrote: Hi again, I found more details for the karaf-maven-plugin in the doc and changed the packaging to "kar". The feature.xml is now read from the src/main/feature folder and contained only once in the output kar. Unfortunately now a huge number of bundles are included which are inherited from parent projects where I only wanted the bundles defined in the input feature.xml. How can I disable the dependencies from being included in the feature.xml ? I tried with "______includeTransitiveDependencies" = false but that does not help for ignoring inherited dependencies. Thanks and Regards, Michael Am 12. Januar 2012 11:44 schrieb Michael Täschner <[email protected] <mailto:[email protected]> <mailto:m.taeschner@__googlemail.com <mailto:[email protected]>> <mailto:m.taeschner@ <mailto:m.taeschner@>__googlema__il.com <http://googlemail.com> <mailto:m.taeschner@__googlemail.com <mailto:[email protected]>>> <mailto:m.taeschner@ <mailto:m.taeschner@> <mailto:m.taeschner@ <mailto:m.taeschner@>>__googlem__a__il.com <http://googlema__il.com> <http://googlemail.com> <mailto:m.taeschner@ <mailto:m.taeschner@>__googlema__il.com <http://googlemail.com> <mailto:m.taeschner@__googlemail.com <mailto:[email protected]>>>>>: Hi David, sorry but I am still confused. I had a look at the 3.0.0 users-guide/kar and it says to put the feature.xml into src/main/resources: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.______org/POM/4.0.0 <http://maven.apache.org/POM/____4.0.0 <http://maven.apache.org/POM/__4.0.0> <http://maven.apache.org/POM/__4.0.0 <http://maven.apache.org/POM/4.0.0>>>" xmlns:xsi="http://www.w3.org/______2001/XMLSchema-instance <http://www.w3.org/____2001/XMLSchema-instance> <http://www.w3.org/__2001/__XMLSchema-instance <http://www.w3.org/__2001/XMLSchema-instance>> <http://www.w3.org/2001/____XMLSchema-instance <http://www.w3.org/2001/__XMLSchema-instance> <http://www.w3.org/2001/__XMLSchema-instance <http://www.w3.org/2001/XMLSchema-instance>>>" xsi:schemaLocation="http://__m____aven.apache.org/POM/4.0.0 <http://m__aven.apache.org/POM/4.0.0> <http://maven.apache.org/POM/__4.0.0 <http://maven.apache.org/POM/4.0.0>> <http://maven.apache.org/POM/____4.0.0 <http://maven.apache.org/POM/__4.0.0> <http://maven.apache.org/POM/__4.0.0 <http://maven.apache.org/POM/4.0.0>>> http://maven.apache.org/xsd/______maven-4.0.0.xsd <http://maven.apache.org/xsd/____maven-4.0.0.xsd> <http://maven.apache.org/xsd/____maven-4.0.0.xsd <http://maven.apache.org/xsd/__maven-4.0.0.xsd>> <http://maven.apache.org/xsd/____maven-4.0.0.xsd <http://maven.apache.org/xsd/__maven-4.0.0.xsd> <http://maven.apache.org/xsd/__maven-4.0.0.xsd <http://maven.apache.org/xsd/maven-4.0.0.xsd>>>"> <modelVersion>4.0.0</______modelVersion> <groupId>my.groupId</groupId> <artifactId>my-kar</______artifactId> <version>1.0</version> <packaging>pom</packaging> <build> <plugins> <plugin> <groupId>org.apache.karaf.______tooling</groupId> <artifactId>karaf-maven-______plugin</artifactId> <version>3.0.0-SNAPSHOT</______version> <executions> <execution> <id>features-create-kar</id> <goals> <goal>features-create-kar</______goal> </goals> <configuration> <featuresFile>src/main/______resources/features.xml</______featuresFile> </configuration> </execution> </executions> </plugin> </plugins> </build> </project> Can you give me an example with src/main/feature or how to use the plugin with dependencies as features ? Thanks and Regards, Michael 2012/1/12 David Jencks <[email protected] <mailto:[email protected]> <mailto:[email protected] <mailto:[email protected]>__> <mailto:[email protected] <mailto:[email protected]> <mailto:[email protected] <mailto:[email protected]>__>__> <mailto:[email protected] <mailto:[email protected]> <mailto:[email protected] <mailto:[email protected]>__> <mailto:[email protected] <mailto:[email protected]> <mailto:[email protected] <mailto:[email protected]>__>__>__>> Hi Michael, I'm still slightly confused because 3.0.0 does not have a feature-maven-plugin, it has a karaf-maven-plugin. Using the 3.0.0 karaf-maven-plugin, put your source feature.xml in src/main/feature/feature.xml, NOT src/main/resources/feature.______xml. It will get filtered before the feature generation from maven dependencies takes place. Use the kar packaging as explained in the 3.0.0 manual. Unless you need different start-levels for different bundles, or something like config information in the feature descriptor, you can have the plugin generate the entire feature.xml from maven dependencies. hope this helps david jencks On Jan 12, 2012, at 12:35 AM, Michael Täschner wrote: Hi again, sorry for any confusion, I hope to clarify my goals and approach. My goal is to generate kar archive for my multimodule project to deploy them at runtime as self-contained features. For this I set up a module for generating the kar from a filtered feature file to manage the version information of the project. I started using "archive-kar" goal of feature-maven-plugin of 3.0.0.SNAPSHOT with the feature.xml residing in src/main/resources. As the feature.xml has to be filtered first, I refer to the filtered file as input for the plugin: <featuresFile>${project.build.______outputDirectory}/features.____xml<__/featuresFile> JB recommended using "create-kar" goal of released karaf feature-maven-plugin (tried with 2.2.5) and the feature.xml in the same folder. The result is the same, that the final kar archive contains 2 feature.xml files causing karaf to register 2 feature repositories, one for the file copied in from /target/classes and the other one from /repository/<groupid>/<______artifactId> ... My question was then if one of them could be removed from the kar file to prevent duplicate feature repository entries. Feature file (example): <?xml version="1.0" encoding="UTF-8"?> <features name="${project.artifactId}-${______project.version}" xmlns="http://karaf.apache.______org/xmlns/features/v1.0.0 <http://karaf.apache.org/____xmlns/features/v1.0.0 <http://karaf.apache.org/__xmlns/features/v1.0.0> <http://karaf.apache.org/__xmlns/features/v1.0.0 <http://karaf.apache.org/xmlns/features/v1.0.0>>>"> <feature name='${project.artifactId}' version='${project.version}' > <bundle>mvn:${project.groupId}______/common/${project.version}__</____bundle> <bundle>mvn:${project.groupId}______/businessLogic/${project.______version}</bundle> <bundle>mvn:${project.groupId}______/webservice/${project.____version}__</bundle> </feature> </features> Thanks and Regards, Michael 2012/1/11 David Jencks <[email protected] <mailto:[email protected]> <mailto:[email protected] <mailto:[email protected]>__> <mailto:[email protected] <mailto:[email protected]> <mailto:[email protected] <mailto:[email protected]>__>__> <mailto:[email protected] <mailto:[email protected]> <mailto:[email protected] <mailto:[email protected]>__> <mailto:[email protected] <mailto:[email protected]> <mailto:[email protected] <mailto:[email protected]>__>__>__>> I can't tell what you are doing since your information is inconsistent. If you use the trunk (3.0.0-SNAPSHOT) karaf-maven-plugin and the kar packaging your "source" feature.xml file should be in src/main/feature/feature.xml. AFAIK this works fine. I don't know anything about 2.2.x. david jencks On Jan 11, 2012, at 8:21 AM, Michael Täschner wrote: Hi JB, I switched to the create-kar goal of maven-features-plugin of karaf 2.2.5, yet the issues remain: If the input feature file uses properties I can only use the already filtered file in target/classes (I uses ${project.artifactId}, version, etc.) else the bundles cannot be resolved. Additionally the resulting kar still contains two feature files: the one from build path (target/classes) and the one within /repository, still resulting in two feature repositories being added in karaf ? Did I do something wrong ? Cheers, Michael 2012/1/11 Jean-Baptiste Onofré <[email protected] <mailto:[email protected]> <mailto:[email protected] <mailto:[email protected]>> <mailto:[email protected] <mailto:[email protected]> <mailto:[email protected] <mailto:[email protected]>>> <mailto:[email protected] <mailto:[email protected]> <mailto:[email protected] <mailto:[email protected]>> <mailto:[email protected] <mailto:[email protected]> <mailto:[email protected] <mailto:[email protected]>>>>> Hi Michael, my comments inline: 1: I use the features-maven-plugin of karaf 3.0.0-SNAPSHOT to "archive-kar" my feature from a filtered features.xml file in src/main/resources/feature. This works fine apart from the fact that the resulting kar contains two features.xml, one in /features (as copied from /target/classes/feature) and one in the correct place under /repository/<groupId>/<________artifactId>-features.xml. How can I tell the plugin to ignore the /target/feature/features.xml in the kar while I still need it for the build ? Right now karaf shows two added feature repositories for the same bundles and I have to remove one manually. The create-kar goal is now available with features-maven-plugin 2.2.5. http://karaf.apache.org/________manual/latest-2.2.x/users-________guide/kar.html <http://karaf.apache.org/______manual/latest-2.2.x/users-______guide/kar.html> <http://karaf.apache.org/______manual/latest-2.2.x/users-______guide/kar.html <http://karaf.apache.org/____manual/latest-2.2.x/users-____guide/kar.html>> <http://karaf.apache.org/______manual/latest-2.2.x/users-______guide/kar.html <http://karaf.apache.org/____manual/latest-2.2.x/users-____guide/kar.html> <http://karaf.apache.org/____manual/latest-2.2.x/users-____guide/kar.html <http://karaf.apache.org/__manual/latest-2.2.x/users-__guide/kar.html>>> <http://karaf.apache.org/______manual/latest-2.2.x/users-______guide/kar.html <http://karaf.apache.org/____manual/latest-2.2.x/users-____guide/kar.html> <http://karaf.apache.org/____manual/latest-2.2.x/users-____guide/kar.html <http://karaf.apache.org/__manual/latest-2.2.x/users-__guide/kar.html>> <http://karaf.apache.org/____manual/latest-2.2.x/users-____guide/kar.html <http://karaf.apache.org/__manual/latest-2.2.x/users-__guide/kar.html> <http://karaf.apache.org/__manual/latest-2.2.x/users-__guide/kar.html <http://karaf.apache.org/manual/latest-2.2.x/users-guide/kar.html>>>> I blogged about it: http://blog.nanthrax.net/2011/________12/do-you-know-the-__apache-______karaf-maven-__plugins/ <http://blog.nanthrax.net/2011/______12/do-you-know-the-apache-______karaf-maven-plugins/> <http://blog.nanthrax.net/__2011/____12/do-you-know-the-__apache-____karaf-maven-__plugins/ <http://blog.nanthrax.net/2011/____12/do-you-know-the-apache-____karaf-maven-plugins/>> <http://blog.nanthrax.net/____2011/__12/do-you-know-the-____apache-__karaf-maven-plugins/ <http://blog.nanthrax.net/__2011/__12/do-you-know-the-__apache-__karaf-maven-plugins/> <http://blog.nanthrax.net/__2011/__12/do-you-know-the-__apache-__karaf-maven-plugins/ <http://blog.nanthrax.net/2011/__12/do-you-know-the-apache-__karaf-maven-plugins/>>__> <http://blog.nanthrax.net/______2011/12/do-you-know-the-______apache-karaf-maven-plugins/ <http://blog.nanthrax.net/____2011/12/do-you-know-the-____apache-karaf-maven-plugins/> <http://blog.nanthrax.net/____2011/12/do-you-know-the-____apache-karaf-maven-plugins/ <http://blog.nanthrax.net/__2011/12/do-you-know-the-__apache-karaf-maven-plugins/>> <http://blog.nanthrax.net/____2011/12/do-you-know-the-____apache-karaf-maven-plugins/ <http://blog.nanthrax.net/__2011/12/do-you-know-the-__apache-karaf-maven-plugins/> <http://blog.nanthrax.net/__2011/12/do-you-know-the-__apache-karaf-maven-plugins/ <http://blog.nanthrax.net/2011/12/do-you-know-the-apache-karaf-maven-plugins/>>>> The create-kar goal take the featuresFile, so it should include only this one, and you shouldn't use a resource for that. 2. Undeploy of kar from the karaf /deploy folder has currently no effect, neither the feature repo, nor the features/bundles themselves are undeployed ? Additionally I wonder what would happen if I copy a newer kar of my features to the /deploy folder ?! It's an expected behavior. Removing a kar file doesn't remove the features installed (and the bundles/config associated). On Karaf 2.2.x, the kar is uncompress in the local-repo folder, adding a .timestamp. If you copy a new KAR, the KarDeployer will check if the kar is newer than the previous .timestamp and so it will try to update the features/bundles. Else, nothing will be performed. Regards JB I am grateful for any answer and look forward to hearing from you. Kind Regards, Michael -- Jean-Baptiste Onofré [email protected] <mailto:[email protected]> <mailto:[email protected] <mailto:[email protected]>> <mailto:[email protected] <mailto:[email protected]> <mailto:[email protected] <mailto:[email protected]>>> <mailto:[email protected] <mailto:[email protected]> <mailto:[email protected] <mailto:[email protected]>> <mailto:[email protected] <mailto:[email protected]> <mailto:[email protected] <mailto:[email protected]>>>> http://blog.nanthrax.net <http://blog.nanthrax.net/> Talend - http://www.talend.com <http://www.talend.com/> -- Jean-Baptiste Onofré [email protected] <mailto:[email protected]> <mailto:[email protected] <mailto:[email protected]>> <mailto:[email protected] <mailto:[email protected]> <mailto:[email protected] <mailto:[email protected]>>> http://blog.nanthrax.net Talend - http://www.talend.com -- Jean-Baptiste Onofré [email protected] <mailto:[email protected]> <mailto:[email protected] <mailto:[email protected]>> http://blog.nanthrax.net Talend - http://www.talend.com -- Jean-Baptiste Onofré [email protected] <mailto:[email protected]> http://blog.nanthrax.net Talend - http://www.talend.com
-- Jean-Baptiste Onofré [email protected] http://blog.nanthrax.net Talend - http://www.talend.com
