Start free
Andrew Hanna

Andrew Hanna

Salesforce Second-Generation Packaging (2GP), erklärt

Salesforce Second-Generation Packaging (2GP), erklärt

TL;DR: Second-Generation Packaging (2GP) ist Salesforces moderne, quellcodegetriebene Art, managed und unlocked Packages aus der Versionsverwaltung statt aus einer Packaging-Org zu bauen und zu verteilen. Es ersetzt First-Generation Packaging (1GP) durch modulare Packages, flexible Namespaces, explizite Abhängigkeiten und einen Salesforce-CLI-Workflow. Salesforce empfiehlt 2GP nun für jede neue Entwicklung von managed Packages.

Was ist Salesforce Second-Generation Packaging (2GP)?

Ein 2GP-Package ist ein Container für die Metadaten, den Code und das Schema, die Sie als App verteilen - an AppExchange-Kunden (managed) oder über Ihren eigenen Org-Bestand (unlocked). Die Kernidee: Das Package wird aus dem Quellcode in Git gebaut, nicht aus einer zustandsbehafteten Packaging-Org. Salesforce stellt ausdrücklich klar, dass managed 2GP "nicht bloß Version 2.0" von 1GP ist; es ist ein anderes, automatisierungsfreundliches Entwicklungsmodell und der empfohlene Weg für alle neuen Packages.

Wie unterscheidet sich 2GP von First-Generation Packaging (1GP)?

Kurz gesagt: 1GP lebt in einer Packaging-Org, 2GP lebt in Ihrem Repository. Diese eine Änderung schaltet den Rest frei:

  • Quellcodegetrieben. Die Package-Version wird aus Ihrem Projekt-Quellcode erstellt, also ist Git die Quelle der Wahrheit.
  • Modular. Sie können Funktionalität auf mehrere Packages aufteilen statt auf einen Monolithen.
  • Namespace-Flexibilität. Derselbe Namespace kann von mehreren 2GP-Packages genutzt werden, wobei jedes Package an einen Namespace gebunden ist, der nach der Erstellung nicht mehr geändert werden kann.
  • Explizite Abhängigkeiten. Package-Abhängigkeiten werden in sfdx-project.json deklariert, nicht erst bei der Installation entdeckt.
  • Versionsverwaltungs- und CI-freundlich. Der gesamte Ablauf läuft über die Salesforce CLI und passt so in eine Pipeline.

Managed oder unlocked: welches 2GP brauchen Sie?

Beide sind Second-Generation-Packages, die auf die gleiche Weise gebaut werden. Die Wahl betrifft das Publikum:

  • Managed 2GP - für ISVs, die über AppExchange verteilen. Der Code ist IP-geschützt und das Package trägt einen registrierten Namespace.
  • Unlocked Packages - für interne Teams, die die Metadaten einer Org in bereitstellbare, versionierte Einheiten gliedern. Der Code bleibt lesbar.

Wie erstellen Sie ein 2GP-Package? (Schritt für Schritt)

Sie brauchen eine Dev-Hub-Org mit aktiviertem Unlocked Packages and Second-Generation Managed Packages und der Berechtigung Create and Update Second-Generation Packages. Dann:

  1. Erstellen Sie die Package-Definition. sf package create --name MyApp --package-type Managed --path force-app --target-dev-hub DevHub
  2. Erstellen Sie eine Version aus Ihrem Quellcode, mit Installationsschlüssel und Codeabdeckung. sf package version create --package MyApp --installation-key test1234 --code-coverage --wait 10
  3. Testen Sie die Installation in einer Scratch- oder Sandbox-Org. sf package install --package 04t... --wait 10
  4. Geben Sie zu released frei, sobald sie besteht. Die Freigabe erfordert das Erreichen der Codeabdeckung. sf package version promote --package [email protected]

Eine freigegebene managed Version ist die, die Sie vor der Installation durch Kunden zur AppExchange Security Review einreichen.

Was sind die häufigen 2GP-Stolperfallen?

  • Der Namespace ist dauerhaft. Wählen Sie ihn bewusst; ein 2GP-Package kann den Namespace später nicht wechseln.
  • Codeabdeckung steuert die Freigabe. Sie können eine Version nicht zu released freigeben, ohne die Apex-Abdeckungsanforderungen zu erfüllen.
  • Abhängigkeiten müssen explizit sein. Nicht deklarierte Abhängigkeiten scheitern bei der Installation, nicht beim Build.
  • Nicht jeder 1GP-Metadatentyp wird unterstützt. Prüfen Sie die Abdeckung, bevor Sie ein altes Package migrieren.

Da der gesamte Ablauf CLI-first ist, passt er in eine DevOps-Pipeline - genau dort, wo Werkzeuge wie Copado, Gearset, Salto, AutoRABIT, Flosum oder Blue Canvas Versionsverwaltung und Tests orchestrieren. Für weitere Build- und Release-Playbooks siehe unsere SF Guides.

FAQ

Ersetzt 2GP 1GP?

Salesforce empfiehlt 2GP für alle neuen managed Packages, auch wenn bestehende 1GP-Packages weiter funktionieren und migriert werden können.

Brauche ich einen Dev Hub für 2GP?

Ja. Aktivieren Sie Dev Hub und Second-Generation Packaging und gewähren Sie die Berechtigung zum Erstellen/Aktualisieren von Packages, bevor Sie beginnen.

Können sich zwei 2GP-Packages einen Namespace teilen?

Ja. Mehrere managed 2GP-Packages können einen Namespace nutzen, aber jedes Package ist an einen einzigen Namespace gebunden, der nach der Erstellung nicht geändert werden kann.

Was ist der Unterschied zwischen managed und unlocked Packages?

Managed 2GP dient der AppExchange-Verteilung mit IP-Schutz; unlocked Packages gliedern die Metadaten Ihrer eigenen Org in versionierte, bereitstellbare Einheiten.

Ähnliche Artikel

Neugierig auf schnelleres Shipping, bevor Sie einsteigen? Sprechen wir

Unverbindlich.