Expand my Community achievements bar.

SOLVED

Are the maven-bundle-plugin and content-package-maven-plugin not compatible with newer archtypes compatible with AEM6.5

Avatar

Level 2

When creating an AEM project with new ArcheTypes(version > 22) for AEM 6.5 we see the pom files are getting generated with org.apache.jackrabbit:filevault-package-maven-plugin and biz.aQute.bnd:bnd-maven-plugin. 

If we try to remove org.apache.jackrabbit:filevault-package-maven-plugin from file the build fails.

Is it recommended to use org.apache.jackrabbit:filevault-package-maven-plugin instead of com.day.jcr.vault:content-package-maven-plugin for newer archetypes based project compatible with AEM 6.5 version ?

 

Similarly is biz.aQute.bnd:bnd-maven-plugin recommended to be used instead of org.apache.felix:maven-bundle-plugin for newer archetypes based project compatible with AEM 6.5 version ?

1 Accepted Solution

Avatar

Correct answer by
Employee Advisor

Technically both the filevault-package-maven-plugin and the content-package-maven-plugin can largely the same work, but the Jackrabbit plugin is currently maintained and developed, but the development of the content-package-maven-plugin got stalled for quite some time now. I would recommend to stick to the filevault-package-maven-plugin, because only that is supported on AEM cloud service.

 

And more or less the same with the bnd-maven-plugin. The maven-bundle-plugin was only a shell around bnd for quite some time, but since bnd provides a maven plugin as well, it's not longer needed.

View solution in original post

4 Replies

Avatar

Correct answer by
Employee Advisor

Technically both the filevault-package-maven-plugin and the content-package-maven-plugin can largely the same work, but the Jackrabbit plugin is currently maintained and developed, but the development of the content-package-maven-plugin got stalled for quite some time now. I would recommend to stick to the filevault-package-maven-plugin, because only that is supported on AEM cloud service.

 

And more or less the same with the bnd-maven-plugin. The maven-bundle-plugin was only a shell around bnd for quite some time, but since bnd provides a maven plugin as well, it's not longer needed.

Avatar

Level 1
One more query, the jackrabbit plugin could create package from both source and target folder, but the filevault-package-maven-plugin creates package from source directory only. Is there any way to mention multiple paths to create package from in filevault plugin ?

Avatar

Employee Advisor
Good question, I never had that requirement to read from multiple sources (and my data was always in the source folder). For this case I would recommend to ask on the Jackrabbit user list; the chance for an answer is quite high, because there's still ongoing work and the developers are quite responsive.

Avatar

Level 1

Mainly the maven-bundle-plugin needs to be replaced with bnd-maven-plugin.

 

You do this like this:

 

 

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-enforcer-plugin</artifactId>
                <version>${maven.enforcer.version}</version>
                <executions>
                    <execution>
                        <id>ban-maven-scr-plugin</id>
                        <goals>
                            <goal>enforce</goal>
                        </goals>
                        <configuration>
                            <rules>
                                <bannedPlugins>
                                    <excludes>
                                        <exclude>org.apache.felix:maven-scr-plugin</exclude>
                                    </excludes>
                                    <message>Felix SCR annotations and the maven-scr-plugin are no longer supported -
                                        please migrate to OSGi
                                        annotations or stick with Sling Parent 29.
                                    </message>
                                </bannedPlugins>
                            </rules>
                        </configuration>
                    </execution>
                    <execution>
                        <id>ban-maven-bundle-plugin</id>
                        <goals>
                            <goal>enforce</goal>
                        </goals>
                        <configuration>
                            <rules>
                                <bannedPlugins>
                                    <excludes>
                                        <exclude>org.apache.felix:maven-bundle-plugin</exclude>
                                    </excludes>
                                    <message>The maven-bundle-plugin is no longer supported - please migrate to
                                        bnd-maven-plugin or stick
                                        with Sling Parent 34.
                                    </message>
                                </bannedPlugins>
                            </rules>
                        </configuration>
                    </execution>
                    <execution>
                        <id>enforce-java</id>
                        <goals>
                            <goal>enforce</goal>
                        </goals>
                        <configuration>
                            <rules>
                                <!-- Require Java 8 or higher for building (as bnd since version 4.0 only supports Java 8, https://github.com/bndtools/bnd/wiki/Changes-in-4.0.0) -->
                                <requireJavaVersion>
                                    <message>
                                        Apache Sling must be compiled with Java 8 or higher as the bnd-maven-plugin
                                        requires that.
                                    </message>
                                    <version>1.8.0</version>
                                </requireJavaVersion>
                            </rules>
                        </configuration>
                    </execution>
                </executions>
            </plugin>


            <plugin>
                <groupId>biz.aQute.bnd</groupId>
                <artifactId>bnd-maven-plugin</artifactId>
                <version>${bnd.version}</version>
                <executions>
                    <execution>
                        <id>bnd-process</id>
                        <goals>
                            <goal>bnd-process</goal>
                        </goals>
                        <configuration>
                            <bnd><![CDATA[
Bundle-SymbolicName: design.aem.aemdesign-aem-services
Bundle-Category: design.aem
Bundle-Description: ${project.description}
Bundle-DocURL: https://aem.design
Bundle-License: Apache License, Version 2.0
Bundle-Vendor: AEM.Design
Embed-Transitive: true
Sling-Model-Packages: design.aem
Export-Service: design.aem.workflow.process.*
Export-Package: design.aem.*,\
org.jsoup,\
org.jsoup.examples,\
org.jsoup.helper,\
org.jsoup.nodes,\
org.jsoup.parser,\
org.jsoup.safety,\
org.jsoup.select,\
org.apache.commons.jexl3.*,\
org.apache.sling.installer.api.info,\
org.apache.sling.installer.api.tasks,\
com.adobe.acs.commons.fam,\
com.adobe.acs.commons.util,\
com.adobe.acs.commons.workflow,\
com.adobe.acs.commons.util.visitors,\
com.luciad.imageio.webp.*,\
com.github.jai-imageio.*,\
com.github.jaiimageio.*
-includeresource:\
lib/jsoup-${jsoup.version}.jar=jsoup-${jsoup.version}.jar;lib:=true,\
lib/gson-${gson.version}.jar=gson-${gson.version}.jar;lib:=true,\
lib/webp-imageio-sejda-${webp.version}.jar=webp-imageio-sejda-${webp.version}.jar;lib:=true,\
lib/jai-imageio-core-${imageio.version}.jar=jai-imageio-core-${imageio.version}.jar;lib:=true
# export all versioned packages by default
-exportcontents: design.aem.*,\
org.jsoup,\
org.jsoup.examples,\
org.jsoup.helper,\
org.jsoup.nodes,\
org.jsoup.parser,\
org.jsoup.safety,\
org.jsoup.select,\
org.apache.commons.jexl3.*,\
org.apache.sling.installer.api.info,\
org.apache.sling.installer.api.tasks,\
com.adobe.acs.commons.fam,\
com.adobe.acs.commons.util,\
com.adobe.acs.commons.workflow,\
com.adobe.acs.commons.util.visitors,\
com.luciad.imageio.webp.*,\
com.github.jai-imageio.*,\
com.github.jaiimageio.*
#-sources: false
                                ]]></bnd>
                        </configuration>
                    </execution>
                </executions>
            </plugin>