maven内容包的子包安装顺序问题

时间:2017-09-23 17:31:52

标签: maven java-8 aem jcr

maven内容包安装顺序的子包与pom文件中提到的内容不完全相同。 这仅在使用jdk1.8 java版本的AEM CQ 6.x实例中发生。 在jdk 1.8 maven内容包安装检查包组按字母顺序排列。有没有办法安装子包与pom中提到的顺序相同。

                <subPackages>
                    <subPackage>
                         <groupId>com.test</groupId>
                         <artifactId>first</artifactId>
                    </subPackage>
                    <subPackage>
                         <groupId>com.test</groupId>
                         <artifactId>second</artifactId>
                    </subPackage>
                </subPackages>

2 个答案:

答案 0 :(得分:0)

子软件包非常适合俄罗斯娃娃式部署,在该部署中,您将Blob之类的CMS应用拆分为“垂直”(使用上下文映射作为战略性的领域驱动设计模式)。 每个“垂直”将表示为一个子包(将“内容”和“捆绑包”带到组成“业务子域”(又称为“垂直”)的表中)。

这样做的好处是,多个团队可以在这些Vertical上并行工作,每个团队都可以独立部署他们的SubPackage(mvn install -PautoInstallPackage)-在开发过程中更好的隔离和更好的往返时间(您只需部署更改的内容即可)您的本地邮箱)。

然后,您需要具有一个顶级内容包或UBER内容包,其中包括代表垂直行业的所有内容包,以便能够将整个包安装到任何TEST,QA或PROD Env中。

只要顺序是独立的,顺序就不重要。 有时候,您会有依赖性。

您应该努力使用Maven在DEPENDENT Content Package Project中声明那些依赖项:

<plugin>
    <groupId>com.day.jcr.vault</groupId>
    <artifactId>content-package-maven-plugin</artifactId>
    <extensions>true</extensions>
    <configuration>
        <name>mysubdomain-ui-content</name>
        <finalName>mysubdomain-ui-content-${project.version}</finalName>
        <filterSource>src/main/resources/vault/filter.xml</filterSource>
        <properties>
            <acHandling>merge_preserve</acHandling>
            <description>Content Package that has a dependency on another Content Package that needs to be installed first</description>
            <!-- controls deployment order when installing the myproject-content Package -->
            <!-- As both packages have the same lifecycle, the project.version is the same for both -->
            <dependencies><groupIDOtherPKG>:<artifactIDOtherPackage>:${project.version}</dependencies>  <!-- here goes the magic -->
        </properties>
        <subPackages>
            <subPackage>

您需要将<groupIDOtherPKG>:<artifactIDOtherPackage>设置为您在此处依赖的包的相应Maven坐标(例如,mycompany:my-content-package)。

通常,如果另一个Content Package不仅将Content带入捆绑包,还需要将Bundles带到表中,则需要这种依赖声明。

请记住不要产生循环。 即使maven会阻止您这样做,您还是应该在开始时就确定要允许Verticals / Content Packages依赖于其他人...

答案 1 :(得分:-1)

为什么需要按特定顺序安装子包?这是否意味着子包具有内部依赖性?