Verwalten von Paketen mithilfe von Maven

Verwenden Sie das Inhaltspaket-Maven-Plugin zum Integrieren von Paketverwaltungsaufgaben in Ihre Maven-Projekte. Die Plugin-Ziele und -Parameter ermöglichen Ihnen die Automatisierung der Aufgaben, die Sie für gewöhnlich auf der Seite „Paketmanager“ oder an der FileVault-Befehlszeile ausführen würden:

  • Erstellen Sie neue Pakete anhand der Dateien im Dateisystem.
  • Installieren und deinstallieren Sie Pakete auf dem CRX- oder CQ-Server.
  • Erstellen Sie bereits auf dem Server definierte Pakete.
  • Rufen Sie eine Liste der auf dem Server installierten Pakete ab.
  • Entfernen Sie ein Paket vom Server.

Hinzufügen des Inhaltspaket-Maven-Plugins zur POM-Datei

Fügen Sie zum Verwenden des Inhaltspaket-Maven-Plugins das folgende Plugin-Element im Buid-Element Ihrer POM-Datei hinzu:

<plugin>
	<groupId>com.day.jcr.vault</groupId>
	<artifactId>content-package-maven-plugin</artifactId>
	<version>0.0.20</version>
	<configuration>
	      <!-- parameters and values common to all goals, as required --> 
	</configuration>
</plugin>
        

Code-Beispiele dienen lediglich zu Illustrationszwecken.

Verwenden Sie das im Abschnitt Abrufen des Inhaltspaket-Maven-Plugins auf dieser Seite angegebene Profil, um Maven für das Herunterladen des Plugins zu aktivieren.

Ziele des Inhaltspaket-Maven-Plugins

Die durch das Inhaltspaket-Plugin bereitgestellten Ziele und Zielparameter werden in den folgenden Abschnitten beschrieben. Die im Abschnitt „Allgemeine Parameter“ beschriebenen Parameter können für die meisten der Ziele verwendet werden. Parameter, die für ein Ziel zutreffen, werden im Abschnitt für das jeweilige Ziel beschrieben.

Plugin-Präfix

Das Plugin-Präfix lautet „content-package“. Verwenden Sie dieses Präfix, um ein Ziel über die Befehlszeile auszuführen, wie dies im folgenden Beispiel gezeigt wird:

mvn content-package:build 
        

Code-Beispiele dienen lediglich zu Illustrationszwecken.

Parameterpräfix

Soweit nicht anderweitig gekennzeichnet, verwenden die Plugin-Ziele und -Parameter das Präfix „vault“. Dies gilt auch für das folgende Beispiel:

mvn content-package:install -Dvault.targetURL="http://192.168.1.100:4502/crx/packmgr/service.jsp"
        

Code-Beispiele dienen lediglich zu Illustrationszwecken.

Proxys

Ziele, die Proxys für den CRX- oder CQ-Server verwenden, verwenden die erste in den Maven-Einstellungen gefundene gültige Proxykonfiguration. Wenn keine Proxykonfiguration gefunden wird, wird kein Proxy verwendet. Siehe hierzu den Parameter „useProxy“ im Abschnitt „Allgemeine Einstellungen“.

Allgemeine Parameter

Die Parameter in der folgenden Tabelle gelten für alle Ziele, sofern kein entsprechender Hinweis in der Spalte „Ziele“ vorliegt.

Name Typ Erforderlich Standardwert Beschreibung Ziele
failOnError boolesch Nein false Der Wert true führt zum Fehlschlagen des Builds, wenn ein Fehler auftritt. Der Wert false führt dazu, dass der Build den Fehler ignoriert. Alle Ziele mit Ausnahme von „package“.
name Zeichenfolge Build: Ja
install: Nein
rm: Ja
Build: Kein Standard.
install: Der Wert der Eigenschaft „artifactId“ des Maven-Projekts.
Der Name des zu bearbeitenden Pakets. Alle Ziele mit Ausnahme von „Is“.
password Zeichenfolge Ja admin Das für die Authentifizierung am CRX-Server verwendete Kennwort. Alle Ziele mit Ausnahme von „package“.
serverId Zeichenfolge Nein Die Server-ID, über die der Benutzername und das Kennwort für die Authentifizierung abgerufen werden. Alle Ziele mit Ausnahme von „package“.
targetURL Zeichenfolge Ja http://localhost:4502/
crx/packmgr/
service.jsp
Die URL der HTTP-Dienst-API des CRX-Paketmanagers. Alle Ziele mit Ausnahme von „package“.
timeout int Nein 5 Die Verbindungs-Zeitüberschreitung für die Kommunikation mit dem Paketmanagerdienst in Sekunden. Alle Ziele mit Ausnahme von „package“.
useProxy boolesch Nein true Bestimmt, ob Proxykonfigurationen aus der Maven-Einstellungsdatei verwendet werden sollen. Der Wert true führt zur Verwendung der ersten zum proxybasierten Vermitteln von Anforderungen an den Paketmanager gefundenen aktiven Proxykonfiguration. Der Wert „false“ führt dazu, dass kein Proxy verwendet wird. Alle Ziele mit Ausnahme von „package“.
userId Zeichenfolge Ja admin Der am CRX-Server zu authentifizierende Benutzername. Alle Ziele mit Ausnahme von „package“.
verbose boolesch Nein false Aktiviert oder deaktiviert die ausführliche Protokollierung. Der Wert true aktiviert die ausführliche Protokollierung. Alle Ziele mit Ausnahme von „package“.

Build

Erstellt ein bereits auf einem CRX- oder CQ5-Server definiertes Inhaltspaket.

Hinweis

Dieses Ziel muss nicht in einem Maven-Projekt ausgeführt werden.

Parameter

Alle Parameter für das Buildziel werden im Abschnitt Allgemeine Parameter beschrieben.

Beispiel

Im folgenden Beispiel wird das Paket „workflow-mbean“ erstellt, das auf dem CQ-Server installiert ist und die IP-Adresse 10.36.79.223 aufweist. Das Ziel wird mithilfe des folgenden Befehls ausgeführt:

mvn content-package:build
        

Code-Beispiele dienen lediglich zu Illustrationszwecken.

Die folgende POM-Datei befindet sich im aktuellen Verzeichnis des Befehlszeilentools. Der POM gibt den Paketnamen und die URL des Paketdiensts an.

<project xmlns="http://maven.apache.org/POM/4.0.0" 
		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
		xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.adobe.example</groupId>
  <artifactId>example-package</artifactId>
  <version>0.0.1-SNAPSHOT</version>
    <build>
        <plugins>
	    <plugin>
		<groupId>com.day.jcr.vault</groupId>
		<artifactId>content-package-maven-plugin</artifactId>
		<version>0.0.20</version>
		<configuration>
			<name>workflow-mbean</name>
			<failOnError>true</failOnError>
			<targetURL>http://10.36.79.223:4502/crx/packmgr/service.jsp</targetURL>
		</configuration>
	    </plugin>
	</plugins>
    </build>
</project>
        

Code-Beispiele dienen lediglich zu Illustrationszwecken.

install

Installiert ein Paket im CRX-Repository. Für die Ausführung dieses Ziels ist kein Maven-Projekt erforderlich. Das Ziel ist an die Installationsphase des Maven-Build-Lebenszyklus gebunden.

Parameter

Lesen Sie neben den folgenden Parametern die Beschreibungen im Abschnitt Allgemeine Parameter.

Name Typ Erforderlich Standardwert Beschreibung
Artefakt Zeichenfolge Nein Der Wert der Eigenschaft „artifactId“ des Maven-Projekts. Eine Zeichenfolge in der Form groupId:artifactId:version[:packaging].
artifactId Zeichenfolge Nein Die ID des einzubettenden Artefakts.
groupId Zeichenfolge Nein Die Gruppen-ID des zu installierenden Artefakts.
install boolesch Nein true Bestimmt, ob das Paket beim Hochladen automatisch entpackt werden soll. Wenn der Wert „true“ vorliegt, wird das Paket entpackt. Liegt hingegen der Wert „false“ vor, wird das Paket nicht entpackt.
localRepository org.apache.maven.
artifact. repository.
ArtifactRepository
Nein Der Wert der Systemvariablen „localRepository“. Das lokale Maven-Repository. Sie können diesen Parameter nicht mithilfe der Plugin-Konfiguration konfigurieren. Die Systemeigenschaft wird immer verwendet.
packageFile java.io.File Nein Das für das Maven-Projekt definierte primäre Artefakt. Der Name der zu installierenden Paketdatei.
packaging Zeichenfolge Nein zip Der Verpackungstyp des zu installierenden Artefakts.
pomRemoteRepositories java.util.List Ja Der Wert der für das Maven-Projekt definierten Eigenschaft „remoteAtifactRepositories“. Dieser Wert kann nicht mithilfe der Plugin-Konfiguration konfiguriert werden. Der Wert muss im Projekt angegeben werden. 
Projekt org.apache.maven.
project.MavenProject
Ja Das Projekt, für das das Plugin konfiguriert ist. Das Maven-Projekt. Das Projekt ist implizit, da das Projekt die Plugin-Konfiguration aufweist.
repositoryId (POM)
repoID (Befehlszeile)
Zeichenfolge Nein temp Die ID des Repositorys, vom dem das Artefakt abgerufen wird. Verwenden Sie „repositoryID“ in einem POM. Verwenden Sie „repoID“ an einer Befehlszeile.
repositoryUrl (POM)
repoURL (Befehlszeile)
Zeichenfolge Nein Die URL des Repositorys, vom dem das Artefakt abgerufen wird. Verwenden Sie „repositoryURL“ in einem POM. Verwenden Sie „repoURL“ an einer Befehlszeile.
Version Zeichenfolge Nein Die Version des zu installierenden Artefakts.

Beispiel

Im folgenden Beispiel wird ein Paket erstellt, in dem das workflow-mbean OSGi-Bundle (siehe hierzu das Beispiel für das Build-Ziel) enthalten ist. Anschließend wird das Paket installiert. Da das Installationsziel an die Paketinstallationsphase gebunden ist, führt der folgende Befehl das Installationsziel aus:

mvn install
        

Code-Beispiele dienen lediglich zu Illustrationszwecken.

<project xmlns="http://maven.apache.org/POM/4.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
    http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.adobe.example.myapp</groupId>
  <artifactId>workflow-mbean</artifactId>
  <version>0.0.3-SNAPSHOT</version>

  <build>
    <plugins>
      <plugin>
        <groupId>com.day.jcr.vault</groupId>
        <artifactId>content-package-maven-plugin</artifactId>
        <version>0.0.20</version>
        <configuration>
          <builtContentDirectory>jcr_root</builtContentDirectory>
          <targetURL>http://10.36.79.223:4502/crx/packmgr/service.jsp</targetURL>
        </configuration>
        <executions>
          <execution>
            <goals>
              <goal>package</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>
        

Code-Beispiele dienen lediglich zu Illustrationszwecken.

ls

Führt die im Paketmanager bereitgestellten Pakete auf.

Parameter

Alle Parameter des Ziels „Is“ werden im Abschnitt Allgemeine Parameter beschrieben.

Beispiel

Im folgenden Beispiel werden die Pakete aufgeführt, die auf dem CQ-Server mit der IP-Adresse 10.36.79.223 installiert sind. Das Ziel wird mithilfe des folgenden Befehls ausgeführt:

mvn content-package:ls
        

Code-Beispiele dienen lediglich zu Illustrationszwecken.

Die folgende POM-Datei befindet sich im aktuellen Verzeichnis des Befehlszeilentools. Der POM gibt die URL des Paketdiensts an.

<project xmlns="http://maven.apache.org/POM/4.0.0" 
		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
		xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.adobe.example</groupId>
  <artifactId>example-package</artifactId>
  <version>0.0.1-SNAPSHOT</version>
    <build>
        <plugins>
	    <plugin>
		<groupId>com.day.jcr.vault</groupId>
		<artifactId>content-package-maven-plugin</artifactId>
		<version>0.0.20</version>
		<configuration>
		    <targetURL>http://10.36.79.223:4502/crx/packmgr/service.jsp</targetURL>
		</configuration>
	     </plugin>
	  </plugins>
     </build>
</project>
        

Code-Beispiele dienen lediglich zu Illustrationszwecken.

rm

Entfernt ein Paket aus dem Paketmanager.

Parameter

Alle Parameter des rm-Ziels werden im Abschnitt Allgemeine Parameter beschrieben.

Beispiel

Im folgenden Beispiel wird das Paket „workfow-mbean“ entfernt, das auf dem CQ-Server installiert ist und die IP-Adresse 10.36.79.223 aufweist. Das Ziel wird mithilfe des folgenden Befehls ausgeführt:

mvn content-package:rm
        

Code-Beispiele dienen lediglich zu Illustrationszwecken.

Die folgende POM-Datei befindet sich im aktuellen Verzeichnis des Befehlszeilentools. Der POM gibt die URL des Paketdiensts und den Namen des Pakets an.

<project xmlns="http://maven.apache.org/POM/4.0.0" 
		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
		xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.adobe.example</groupId>
  <artifactId>example-package</artifactId>
  <version>0.0.1-SNAPSHOT</version>
    <build>
        <plugins>
	    <plugin>
		<groupId>com.day.jcr.vault</groupId>
		<artifactId>content-package-maven-plugin</artifactId>
		<version>0.0.20</version>
		<configuration>
                    <name>workflow-mbean</name>
		    <targetURL>http://10.36.79.223:4502/crx/packmgr/service.jsp</targetURL>
		</configuration>
	     </plugin>
	  </plugins>
     </build>
</project>
        

Code-Beispiele dienen lediglich zu Illustrationszwecken.

uninstall

Deinstalliert ein Paket. Das Paket verbleibt auf dem Server mit dem deinstallierten Status.

Parameter

Alle Parameter des uninstall-Ziels werden im Abschnitt Allgemeine Parameter beschrieben.

Beispiel

Im folgenden Beispiel wird das Paket „workflow-mbean“ deinstalliert, das auf dem CQ-Server installiert ist und die IP-Adresse 10.36.79.223 aufweist. Das Ziel wird mithilfe des folgenden Befehls ausgeführt:

mvn content-package:uninstall
        

Code-Beispiele dienen lediglich zu Illustrationszwecken.

Die folgende POM-Datei befindet sich im aktuellen Verzeichnis des Befehlszeilentools. Der POM gibt den Paketnamen und die URL des Paketdiensts an.

<project xmlns="http://maven.apache.org/POM/4.0.0" 
		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
		xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.adobe.example</groupId>
  <artifactId>workflow-mbean</artifactId>
  <version>0.0.3-SNAPSHOT</version>
    <build>
        <plugins>
	    <plugin>
		<groupId>com.day.jcr.vault</groupId>
		<artifactId>content-package-maven-plugin</artifactId>
		<version>0.0.20</version>
		<configuration>
			<name>workflow-mbean</name>
			<failOnError>true</failOnError>
			<targetURL>http://10.36.79.223:4502/crx/packmgr/service.jsp</targetURL>
		</configuration>
	    </plugin>
	</plugins>
    </build>
</project>
        

Code-Beispiele dienen lediglich zu Illustrationszwecken.

package

Erstellt ein Inhaltspaket. Die Standardkonfiguration des Paketziels umfasst die Inhalte des Verzeichnisses, in dem kompilierte Dateien gespeichert sind. Für die Ausführung des Paketziels muss die Phase der Build-Kompilierung abgeschlossen sein. Das Paketziel ist an die Paketphase des Maven-Build-Lebenszyklus gebunden.

Parameter

Lesen Sie neben den folgenden Parametern die Beschreibung des Parameters name im Abschnitt Allgemeine Parameter.

Name Typ Erforderlich Standardwert Beschreibung
archive org.apache.maven.
archiver.
MavenArchiveConfiguration
Nein Die zu verwendende Archivkonfiguration. Siehe die Dokumentation für Maven Archiver.
builtContentDirectory java.io.File Ja Der Wert des Ausgabeverzeichnisses des Maven-Builds. Das Verzeichnis mit den in das Paket einzuschließenden Inhalten.
dependencies java.util.List Nein
embeddedTarget java.lang.String Nein
embeddeds java.util.List Nein
failOnMissingEmbed boolesch Ja false Der Wert „true“ führt zum Fehlschlagen des Builds, wenn ein eingebettetes Artefakt in den Projektabhängigkeiten nicht gefunden werden kann. Der Wert „offalse“ führt dazu, dass der Build den Fehler ignoriert.
filterSource java.io.File Nein Eine die Quelle des Arbeitsbereichsfilters angebende Datei. Die in der Konfiguration angegebenen und über Einbettungen oder Teilpakete eingefügten Filter werden mit dem Dateiinhalt zusammengeführt.
filters com.day.jcr.
vault.maven.pack.impl.
DefaultWorkspaceFilter
Nein Enthält Filterelemente, die den Paketinhalt definieren. Bei der Ausführung werden die Filter in der Datei „filter.xml“ eingeschlossen. Siehe hierzu im Folgenden den Abschnitt „Verwenden von 'filters'“.
finalName java.lang.String Ja Der im Maven-Projekt definierte finalName (Build-Phase). Der Name der generierten ZIP-Paketdatei ohne ZIP-Dateierweiterung.
group java.lang.String Ja Die im Maven-Projekt definierte groupID. Die groupID des generierten Inhaltspakets. Dieser Wert ist Bestandteil des Zielinstallationspfads für das Inhaltspaket.
outputDirectory java.io.File Ja Das im Maven-Projekt definierte Build-Verzeichnis. Das lokale Verzeichnis, in dem das Inhaltspaket gespeichert ist.
prefix java.lang.String Nein
Projekt org.apache.maven.
project.MavenProject
Ja Das Maven-Projekt.
properties java.util.Map Nein Zusätzliche Eigenschaften, die Sie in der Datei „properties.xml“ festlegen können. Diese Eigenschaften können die folgenden vordefinierten Eigenschaften nicht außer Kraft setzen:
  • group: Verwenden Sie den Parameter „group“ zum Festlegen.
  • name: Verwenden Sie den Parameter „name“ zum Festlegen.
  • version: Verwenden Sie den Parameter „version“ zum Festlegen.
  • description: Festgelegt anhand der Projektbeschreibung
  • groupId: Die groupId des Maven-Projektdeskriptors
  • artifactId: Die artifactId des Maven-Projektdeskriptors
  • dependencies: Verwenden Sie den Parameter „dependencies“ zum Festlegen.
  • createdBy: Der Wert der Systemeigenschaft „user.name“
  • created: Die aktuelle Systemzeit
  • requiresRoot: Verwenden Sie den Parameter „requiresRoot“ zum Festlegen.
  • packagePath: Automatisch generiert anhand des Gruppen- und Paketnamens
requiresRoot boolesch Ja false Definiert, ob für das Paket „root“ erforderlich ist Dies wird zur Eigenschaft <code>requiresRoot</code> der Datei „properties.xml“.
subPackages java.util.List Nein
Version java.lang.String Ja Die im Maven-Projekt definierte Version Die Version des Inhaltspakets
workDirectory java.io.File Ja Das im Maven-Projekt (Build-Phase) definierte Verzeichnis. Das Verzeichnis mit den in das Paket einzuschließenden Inhalten.

Verwenden von „filters“

Verwenden Sie das Element „filters“ zum Definieren des Paketinhalts. Die Filter werden zum Element „workspaceFilter“ in der Datei META-INF/vault/filter.xml des Pakets hinzugefügt.

Im folgenden Filterbeispiel wird die zu verwendende XML-Struktur gezeigt:

<filter>
   <root>/apps/myapp</root>
   <mode>merge</mode> 
       <includes>
              <include>/apps/myapp/install/</include>
              <include>/apps/myapp/components</include>
       </includes>
       <excludes>
              <exclude>/apps/myapp/config/*</exclude>
       </excludes>
</filter>
        

Code-Beispiele dienen lediglich zu Illustrationszwecken.

Importieren von „mode“

Das Element mode definiert, wie sich das Importieren des Pakets auf den Inhalt im Repository auswirkt. Die folgenden Werte können verwendet werden:

  • Merge: Inhalt im Paket, der sich nicht bereits im Repository befindet, wird hinzugefügt. Inhalt, der sich im Paket und Repository befindet, verbleibt unverändert.Es wird kein Inhalt aus dem Repository entfernt. 
  • Replace: Inhalt im Paket, der sich nicht im Repository befindet, wird zum Repository hinzugefügt. Inhalt im Repository wird durch übereinstimmenden Inhalt im Paket ersetzt.Inhalt wird aus dem Repository entfernt, wenn es im Paket nicht vorhanden ist.
  • Update: Inhalt im Paket, der sich nicht im Repository befindet, wird zum Repository hinzugefügt. Inhalt im Repository wird durch übereinstimmenden Inhalt im Paket ersetzt.Vorhandener Inhalt wird aus dem Repository entfernt.  

Wenn der Filter kein mode-Element aufweist, wird der Standardwert replace verwendet. 

Beispiel

Im folgenden Beispiel wird ein Paket erstellt, das das workflow-mbean OSGi-Bundle enthält. Die POM-Datei identifiziert das Verzeichnis „jcr_root“ als den Wert der Eigenschaft „builtContentDirectory“. Das Verzeichnis „jcr_root“ enthält die Bundle-JAR-Datei in der Verzeichnisstruktur, die das Repository spiegelt:

jcr_root/apps/myapp/install/workflow-mbean-0.03-SNAPSHOT.jar

Da das Ziel an die Paket-Build-Phase gebunden ist, führt der folgende Befehl das Paketziel aus:

mvn package
        

Code-Beispiele dienen lediglich zu Illustrationszwecken.

<project xmlns="http://maven.apache.org/POM/4.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
    http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.adobe.example.myapp</groupId>
  <artifactId>workflow-mbean</artifactId>
  <version>0.0.3-SNAPSHOT</version>

  <build>
    <plugins>
      <plugin>
        <groupId>com.day.jcr.vault</groupId>
        <artifactId>content-package-maven-plugin</artifactId>
        <version>0.0.20</version>
        <configuration>
          <builtContentDirectory>jcr_root</builtContentDirectory>
          <targetURL>http://10.36.79.223:4502/crx/packmgr/service.jsp</targetURL>
        </configuration>
        <executions>
          <execution>
            <goals>
              <goal>package</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>
        

Code-Beispiele dienen lediglich zu Illustrationszwecken.

Anstatt das Ziel package im Plugin-Abschnitt executions auszudrücken, können Sie content-package als den Wert des Projektelements packaging verwenden.

<project xmlns="http://maven.apache.org/POM/4.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
    http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.adobe.example.myapp</groupId>
  <artifactId>workflow-mbean</artifactId>
  <version>0.0.3-SNAPSHOT</version>
  <packaging>content-package</packaging>
  <build>
    <plugins>
      <plugin>
        <groupId>com.day.jcr.vault</groupId>
        <artifactId>content-package-maven-plugin</artifactId>
        <version>0.0.20</version>
        <configuration>
          <builtContentDirectory>jcr_root</builtContentDirectory>
          <targetURL>http://10.36.79.223:4502/crx/packmgr/service.jsp</targetURL>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>
        

Code-Beispiele dienen lediglich zu Illustrationszwecken.

help

Parameter

Name Typ Erforderlich Standardwert Beschreibung
detail boolesch Nein false Bestimmt, ob alle festlegbaren Eigenschaften für jedes Ziel angezeigt werden sollen. Der Wert „true“ zeigt alle festlegbaren Eigenschaften an.
goal Zeichenfolge Nein Der Name des Ziels, für das die Hilfe angezeigt werden soll. Wenn kein Wert angegeben wird, wird die Hilfe für alle Ziele angezeigt.
indentSize int Nein 2 Die Anzahl der für die Einrückung jeder Ebene zu verwendenden Leerzeichen. Wenn Sie einen Wert angeben, sollte dieser positiv sein.
lineLength int Nein 80 Die maximale Länge einer Anzeigezeile. Wenn Sie einen Wert angeben, sollte dieser positiv sein.

Abrufen des Inhaltspaket-Maven-Plugins

Das Plugin steht über das öffentliche Adobe-Repository zur Verfügung. Fügen Sie zum Herunterladen des Plugins Ihrer Maven-Einstellungsdatei das folgende Maven-Profil hinzu und aktivieren Sie es. Beim Verwenden eines Maven-Befehls wird das Plugin bei Bedarf in Ihr lokales Repository heruntergeladen.

Hinweis

Das Adobe Public Releases-Repository kann nicht durchsucht werden. Wenn Sie mithilfe Ihres Webbrowsers zur Repository-URL navigieren, führt dies demnach zum Fehler „Nicht gefunden“. Maven kann jedoch auf Repositoryverzeichnisse zugreifen.

<profile>
    <id>adobe-public</id>
    <activation>
         <activeByDefault>false</activeByDefault>
    </activation>
    <properties>
         <releaseRepository-Id>adobe-public-releases</releaseRepository-Id>
         <releaseRepository-Name>Adobe Public Releases</releaseRepository-Name>
         <releaseRepository-URL>https://repo.adobe.com/nexus/content/groups/public</releaseRepository-URL>
    </properties>
    <repositories>
         <repository>
             <id>adobe-public-releases</id>
             <name>Adobe Basel Public Repository</name>
             <url>https://repo.adobe.com/nexus/content/groups/public</url>
             <releases>
                 <enabled>true</enabled>
                 <updatePolicy>never</updatePolicy>
             </releases>
             <snapshots>
                 <enabled>false</enabled>
             </snapshots>
         </repository>
     </repositories>
     <pluginRepositories>
         <pluginRepository>
             <id>adobe-public-releases</id>
             <name>Adobe Basel Public Repository</name>
             <url>https://repo.adobe.com/nexus/content/groups/public</url>
             <releases>
                 <enabled>true</enabled>
                 <updatePolicy>never</updatePolicy>
             </releases>
             <snapshots>
                 <enabled>false</enabled>
             </snapshots>
         </pluginRepository>
     </pluginRepositories>
</profile>
        

Code-Beispiele dienen lediglich zu Illustrationszwecken.

Einbetten von OSGi-Bundles in einem Inhaltspaket

Verwenden Sie das Inhaltspaket-Maven-Plugin, um OSGi-Bundles in Ihrem Inhaltspaket einzubetten. Implementieren Sie zum Einbetten des Bundles die folgenden Konfigurationen:

  • Das Bundle muss als eine Abhängigkeit des Maven-Projekts deklariert werden.
  • Die Plugin-Konfiguration verweist unter Verwendung des gewünschten Pfads des Bundles im Paket auf das Bundle.

Der folgende Beispiel-POM erstellt ein Paket, das das Bundle „Apache Sling JCR UserManager“ enthält. Im Paket befindet sich die Bundle-JAR-Datei im Ordner jcr_root/apps/myapp/install:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" 
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
             http://maven.apache.org/maven-v4_0_0.xsd">
	<modelVersion>4.0.0</modelVersion>
  	<groupId>com.adobe.example.myapp</groupId>
	<artifactId>embedded-example</artifactId>
	<packaging>content-package</packaging>
	<version>1.0.0-SNAPSHOT</version>

   <build>
	<plugins>
	    <plugin>
	       <groupId>com.day.jcr.vault</groupId>
		    <artifactId>content-package-maven-plugin</artifactId>
		    <version>0.0.20</version>
		    <extensions>true</extensions>
		    <configuration>
			<filters>
			    <filter>
				<root>/apps/myapp</root>
			    </filter>
			 </filters>
			 <embeddeds>
			    <embedded>
				<groupId>org.apache.sling</groupId>
				<artifactId>org.apache.sling.jcr.jackrabbit.usermanager</artifactId>
				<target>/apps/myproject/install</target>
			     </embedded>
			 </embeddeds>
		     </configuration>
		</plugin>	
	   </plugins>
    </build>
    <dependencies>
	<dependency>
	     <groupId>org.apache.sling</groupId>
	     <artifactId>org.apache.sling.jcr.jackrabbit.usermanager</artifactId>
	     <version>2.2.0</version>
	</dependency>
    </dependencies>	
</project>

        

Code-Beispiele dienen lediglich zu Illustrationszwecken.

Einbeziehen eines Miniaturbilds oder einer Eigenschaftsdatei im Paket

Ersetzen Sie die standardmäßigen Paketkonfigurationsdateien, um die Paketeigenschaften anzupassen. Verwenden Sie beispielsweise ein Miniaturbild, um das Paket im Paketmanager und in der Paketfreigabe voneinander zu unterscheiden.

Im Paket befinden sich die FileVault-spezifischen Dateien im Ordner „/META-INF/“. Die Quelldateien können sich überall in Ihrem Dateisystem befinden. Definieren Sie in der POM-Datei die Build-Ressourcen, um die Quelldateien nach „target/vault-work/META-INF“ zu kopieren, um sie ins Paket einzuschließen.

Im folgenden POM-Code werden die Dateien im Ordner „META-INF“ der Projektquelle zum Paket hinzugefügt:

<build>
    <resources>
        <!-- vault META-INF resources (thumbnail etc.) -->
        <resource>
            <directory>${basedir}/src/main/content/META-INF</directory>
            <targetPath>../vault-work/META-INF</targetPath>
        </resource>
    </resources>
</build>
        

Code-Beispiele dienen lediglich zu Illustrationszwecken.

Im folgenden POM-Code wird nur ein Miniaturbild zum Paket hinzugefügt. Das Miniaturbild muss „thumbnail.png“ benannt werden und sich im Ordner „META-INF/vault/definition“ des Pakets befinden. In diesem Beispiel befindet sich die Quelldatei im Ordner „/src/main/content/META-INF/vault/definition“ des Projekts:

<build>
    <resources>
        <!-- thumbnail only -->
        <resource>
            <directory>${basedir}/src/main/content/META-INF/vault/definition</directory>
            <targetPath>../vault-work/META-INF/vault/definition</targetPath>
        </resource>
    </resources>
</build>
        

Code-Beispiele dienen lediglich zu Illustrationszwecken.

Verwenden von Archetypen zum Generieren vom CQ-Projekten

Für das Generieren von CQ-Projekten stehen verschiedene Maven-Archetypen zur Verfügung. Verwenden Sie den Archetyp, der Ihren Entwicklungszielen entspricht:

Hinweis

Das Apache Sling-Projekt bietet zudem Archetypen, die in der CQ-Entwicklung hilfreich sind. Diese sind unter http://sling.apache.org/site/maven-archetypes.html dokumentiert.

Jeder Archetyp generiert die folgenden Elemente:

  • die Projektordnerstruktur
  • POM-Dateien
  • FileVault-Konfigurationsdateien 

Archetypartefakte stehen über das öffentliche Maven-Repository von Adobe zur Verfügung. Ermitteln Sie zum Herunterladen und Ausführen eines Archetyps den Archetyp und das Adobe-Repository mithilfe der Parameter des Maven-Befehls „archetype:generate“:

mvn archetype:generate -DarchetypeGroupId=com.day.jcr.vault \
-DarchetypeArtifactId={id_of_archetype} -DarchetypeVersion=1.0.2 \
-DarchetypeRepository=adobe-public-releases
        

Code-Beispiele dienen lediglich zu Illustrationszwecken.

Das Maven-Archetyp-Plugin verwendet den interaktiven Modus in der Shell oder Eingabeaufforderung, um Informationen über Ihr Projekt zu sammeln. Die von Ihnen bereitgestellten Informationen werden zum Konfigurieren verschiedener Projekteigenschaften verwendet. Dazu zählen beispielsweise Ordnernamen und Artefakt-IDs.

POM-Dateien

Die generierte POM-Datei umfasst Befehle für das Kompilieren von Code, Erstellen von Bundles und Bereitstellen von diesen in CQ in Paketen. Die Eigenschaften groupID, artifactId, version und name des Maven-Projekts werden automatisch mithilfe der von Ihnen an der interaktiven Maven-Eingabeaufforderung archetype:generate angegebenen Werte automatisch aufgefüllt.

Sie können die folgenden Standardwerte in der generierten Datei „pom.xml“ ändern:

  • den CQ-Servernamen oder die IP-Adresse: Der Standardwert lautet localhost. Das Element crx.host unter project/properties enthält diesen Wert.
  • die Portnummer für den CQ-Server: Der Standardwert lautet 4502. Das Element crx.port unter project/properties enthält diesen Wert.
  • die Version des Inhaltspaket-Maven-Plugins: Verwenden Sie die neueste Version als den Inhalt des Elements version für das Plugin mit artifactId von content-package-maven-plugin. Der Standardwert lautet 0.0.20.

Verwenden der Archetypen

  1. Geben Sie in einem Shell-Fenster oder an einer Eingabeaufforderung den Maven-Befehl archetype:generate ein. Geben Sie bei einer entsprechenden Aufforderung die Werte für die verbleibenden Parameter an.

    Informationen über jeden Parameter finden Sie im Abschnitt für den von Ihnen verwendeten Archetyp.

  2. Verwenden Sie einen Text-Editor zum Öffnen der Datei „pom.xml“ und Bearbeiten der Standardwerte entsprechend Ihren Anforderungen.
  3. Füllen Sie die generierten Ordner mit Ressourcen auf.
  4. Geben Sie den Befehl mvn clean install ein. 

simple-content-package-archetype

Erstellt ein für das Installieren von Ressourcen für eine einfache CQ-Anwendung geeignetes Maven-Projekt. Die Ordnerstruktur, die unter dem Ordner „/apps“ des CQ-Repositorys verwendet wird. Der POM definiert Befehle für das Verpacken der von Ihnen in den Ordnern abgelegten Ressourcen und das Installieren der Pakete auf dem CQ-Server.

Archetypartefakteigenschaften:

  • Gruppen-ID: com.day.jcr.vault
  • Artefakt-ID: simple-content-package-archetype
  • Version: 1.0.2
  • Repository: adobe-public-releases

Maven-Befehl:

mvn archetype:generate -DarchetypeGroupId=com.day.jcr.vault \
-DarchetypeArtifactId=simple-content-package-archetype \
-DarchetypeVersion=1.0.2 \
-DarchetypeRepository=adobe-public-releases
        

Code-Beispiele dienen lediglich zu Illustrationszwecken.

Archetypparameter:

  • groupId: Die groupId des durch Maven generierten Inhaltspakets Der Wert wird automatisch in der POM-Datei verwendet. 
  • artifactId: Der Name des Inhaltspakets Der Wert wird auch als der Name des Projektordners verwendet.
  • version: Die Version des Inhaltspakets
  • package: Dieser Wert wird nicht für „simple-content-package-archetype“ verwendet.
  • appsFolderName: Der Name des Ordners unter „/apps“ 
  • artifactName: Die Beschreibung des Inhaltspakets  
  • packageGroup: Der Name der Inhaltspaketgruppe Dieser Wert konfiguriert den Parameter „group“ für das Paketziel des Inhaltspaket-Maven-Plugins.

Ordnerstruktur:

${artifactId}
   |- pom.xml
   |- README.txt
   |- src
      |- main
         |- content
             |- jcr_root
                 |- apps
                     |- ${appsFolderName}
                            |- components 
                               |- .content.xml
                            |- config
                            |- install
             |- META-INF
                 |- vault
                     |- config.xml
                     |- filter.xml
                     |- nodetypes.cnd
                     |- properties.xml
                     |- definition
                        |- .content.xml
        

Code-Beispiele dienen lediglich zu Illustrationszwecken.

simple-content-package-with-embedded-archetype

Führt dieselben Aufgaben wie „simple-content-package-archetype“ aus und lädt zudem ein Artefakt aus einem öffentlichen Maven-Repository herunter und schließt es ein. 

Archetyp-Bundle-Eigenschaften:

  • Gruppen-ID: com.day.jcr.vault
  • Artefakt-ID: simple-content-package-with-embedded-archetype
  • Version: 1.0.2
  • Repository: adobe-public-releases

Maven-Befehl:

mvn archetype:generate -DarchetypeGroupId=com.day.jcr.vault \
-DarchetypeArtifactId=simple-content-package-with-embedded-archetype \
-DarchetypeVersion=1.0.2 \
-DarchetypeRepository=adobe-public-releases
        

Code-Beispiele dienen lediglich zu Illustrationszwecken.

Archetypparameter:

  • groupId: Die groupId des durch Maven generierten Inhaltspakets Der Wert wird automatisch in der POM-Datei verwendet. 
  • artifactId: Der Name des Inhaltspakets Der Wert wird auch als der Name des Projektordners verwendet.
  • version: Die Version des Inhaltspakets
  • package: Dieser Parameter wird nicht verwendet.
  • appsFolderName: Der Name des Ordners unter „/apps“ 
  • artifactName: Die Beschreibung des Inhaltspakets  
  • embeddedArtifactId: Die ID des in das Inhaltspaket einzubettenden Artefakts
  • embeddedGroupId: Die Gruppen-ID des einzubettenden Artefakts
  • embeddedVersion: Die Version des einzubettenden Artefakts
  • packageGroup: Der Name der Inhaltspaketgruppe Dieser Wert konfiguriert den Parameter „group“ für das Paketziel des Inhaltspaket-MavenWert-Plugins.

Ordnerstruktur:

${artifactId}
   |- pom.xml
   |- README.txt
   |- src
      |- main
         |- content
             |- jcr_root
                 |- apps
                     |- ${appsFolderName}
                            |- components 
                            |- config
                            |- install
             |- META-INF
                 |- vault
                     |- config.xml
                     |- filter.xml
                     |- nodetypes.cnd
                     |- properties.xml
                     |- definition
        

Code-Beispiele dienen lediglich zu Illustrationszwecken.

multimodule-content-package-archetype

Erstellt ein Maven-Projekt, das die Ordnerstruktur für das Entwickeln einer CQ-Anwendung und das Installieren der Ressourcen auf dem Server aufweist

Der Ordner bundle enthält die Ordnerstruktur, in der die Java- und JUnit-Quelldateien gespeichert sind, die Sie entwickeln. Die Datei „pom.xml“ in diesem Ordner erstellt das OSGi-Bundle. Die folgenden Werte im POM ermitteln das Artefakt und das Bundle:

  • artifactID: ${artifactID}-bundle
  • Bundle-SymbolicName: ${groupId}.${artifactId}-bundle.

${artifactID} und ${groupId} sind die Werte, die Sie für diese Parameter beim Ausführen der Archetypen bereitstellen.

Der Ordner content enthält die Ressourcen, die auf dem CQ-Server installiert werden. Der Wert von „artifactID“ lautet  ${artifactID}multimodule-bundle

Der übergeordnete Ordner enthält den übergeordneten POM, der Maven-Plugins und -Abhängigkeiten verwaltet. 

Archetyp-Bundle-Eigenschaften:

  • Gruppen-ID: com.day.jcr.vault
  • Artefakt-ID: multimodule-content-package-archetype
  • Version: 1.0.2
  • Repository: adobe-public-releases

Maven-Befehl:

mvn archetype:generate -DarchetypeGroupId=com.day.jcr.vault \
-DarchetypeArtifactId=multimodule-content-package-archetype \
-DarchetypeVersion=1.0.2 \
-DarchetypeRepository=adobe-public-releases
        

Code-Beispiele dienen lediglich zu Illustrationszwecken.

Archetypparameter:

  • groupId: Die groupId des durch Maven generierten Inhaltspakets Der Wert wird automatisch in der POM-Datei verwendet. 
  • artifactId: Der Name des Inhaltspakets Der Wert wird auch als der Name des Projektordners verwendet.
  • version: Die Version des Inhaltspakets
  • package: Dieser Wert wird nicht für „multimodule-content-package-archetype“ verwendet.
  • appsFolderName: Der Name des Ordners unter „/apps“ 
  • artifactName: Die Beschreibung des Inhaltspakets  
  • packageGroup: Der Name der Inhaltspaketgruppe Dieser Wert konfiguriert den Parameter „group“ für das Paketziel des Inhaltspaket-Maven-Plugins.

Ordnerstruktur:

${artifactId}
   |- pom.xml
   |- bundle
      |- pom.xml
      |- src
         |- main
            |- java
               |- ${groupId}
                  |- SimpleDSComponent.java
         |- test
            |- java
               |- ${groupId}
                  |- SimpleUnitTest.java
   |- content
      |- pom.xml
      |- src
         |- main
            |- content
               |- jcr_root
                  |- apps
                     |- ${appsFolderName} 
                            |- config
                            |- install
                  |- META-INF
                      |- vault
                         |- config.xml
                         |- filter.xml
                         |- nodetypes.cnd
                         |- properties.xml
                         |- definition
                            |- .content.xml
        

Code-Beispiele dienen lediglich zu Illustrationszwecken.

​