使用 Maven 安装 MAVEN 构建依赖项 [OSGi 捆绑包] 到 Adob​​e CQ

Installing MAVEN build dependencies [OSGi bundles] with Maven in to Adobe CQ

我们有一个 CQ REST API 项目来与我们的消费者共享内容。该包是使用 osgi jax-rs 连接器创建的。我们仍处于孵化阶段,但似乎集成工作正常。

我们面临的问题是 "osgi jax-rs connector" 项目需要在 CQ 中安装一些包(osgified,由项目提供)。目前我们正在使用 felix 控制台手动执行此操作。

我们可以使用 MAVEN 自动化该过程吗(我们可以安装使用 MAVEN 创建的包)。

任何对此的指示都会有所帮助。

如果您还有 UI 软件包,例如随 maven-vault-plugin 安装的 ZIP 您可以将 JAR 文件放在任何文件夹中。我通常称它为install:

/apps/myproject/install

CQ 中有一个处理程序可以识别内容包中的 JAR 文件并将它们安装到 OSGi。

如果您正在构建要安装的 zip 包,您可以使用 maven 安装捆绑包,而不包括项目中的依赖项,向您的 SCM 添加额外的 space。

为此,您可以使用 maven-assembly-plugin 插件。

例如,将此包含在您的 pom.xml 中:

    <plugins>
        <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <configuration>
                <appendAssemblyId>false</appendAssemblyId>
                <descriptors>
                    <descriptor>src/main/assembly/zip.xml</descriptor>
                </descriptors>
            </configuration>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>

然后在 zip.xml 中,您将创建这样的程序集文件:

<?xml version='1.0' encoding='UTF-8'?>
<assembly
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
    <id>zip</id>
    <formats>
    <format>zip</format>
    </formats>
    <includeBaseDirectory>false</includeBaseDirectory>
    <fileSets>
    <fileSet>
        <directory>${basedir}/src/main/content/jcr_root</directory>
        <outputDirectory>jcr_root</outputDirectory>
        <excludes>
            <exclude>**/.DS_Store</exclude>
        </excludes>
        <filtered>false</filtered>
    </fileSet>
    </fileSets>
    <dependencySets>
    <dependencySet>
        <outputDirectory>jcr_root/apps/myapp/install</outputDirectory>
        <useProjectArtifact>false</useProjectArtifact>
        <scope>compile</scope>
        <includes>
            <include>com.my.groupid:my-maven-artifact-id</include>
        </includes>
        <useStrictFiltering>true</useStrictFiltering>
    </dependencySet>
    </dependencySets>
</assembly>

您可以根据需要调整依赖集和文件集设置。显然我编了一个AEM应用程序名称和maven神器。