
Explore Alfresco SDKs, from in-process sdk four to out-of-process sdk five, with extension inspector, nexus repository manager, and Jenkins CI for multi-developer projects, including process services and docker images.
Explore Apache Maven as the base build tool for the Alfresco platform and its SDK, and learn to build extensions, manage POM files, dependencies, and archetypes.
Learn to configure a Maven multi-module project by defining a parent pom with modules, structuring submodules, and using mvn install to ensure proper reactor build and local repository updates.
Explore maven archetypes to standardize alfresco sdk projects with parameterized templates. Generate projects via mvn archetype generate, selecting templates like quickstart or web app and setting groupId, artifactId, and version.
The Alfresco platform is written in Java and most extensions are written in Java, so we need to have it correctly installed. That is, having the Java Development Kit (JDK) 17 installed, not just the JRE. Maven is also dependent on Java being installed.
In this lecture we generate a Maven-based build project based on an out-of-the-box Maven archetype (i.e. project template). It is time to put the Maven theory into practice.
In this lecture we do a bit of coding to see how we can create some beans and wire them together with Spring. It is time to put the Spring Framework theory into practice.
Explore Alfresco's in-process SDK, its platform and share extensions, and the all-in-one project, with Maven templates, Docker packaging, and compatibility notes for Java and Alfresco versions.
In this lecture we look at the Alfresco Nexus Repository where all the Alfresco artifacts (i.e. JARs etc) are stored that we define as dependencies in the extension projects.
The extension projects are created from Alfresco Maven Archetypes (i.e. project templates). They need to be downloaded from somewhere. The Maven Central Artifacts Repository is the place.
When building Alfresco customisations they are shipped as a JAR or a so-called AMP. This lecture explains the difference between these artifact types and when to use them.
Generate an all-in-one SDK project with Maven by filtering alfresco templates and selecting the all-in-one archetype, using the specified SDK and JDK versions.
Explore the all-in-one Alfresco platform module, its module id and properties, archetype-driven structure, and how it wires with spring, content models, bootstrapping, and the rest API.
Run alfresco content services extensions with docker compose, building custom repository, content services, and share images. Access localhost:8080 to verify modules via module browser and monitor logs.
Explore the all-in-one project sample code, including server-side web scripts and share UI widgets, showing how to run, configure, and assemble module extensions with a local Nexus repo for Alfresco.
Debug java remotely in the alfresco sdk by configuring a remote jvm in intellij, using docker-based setup and port 888/9898 to step through web scripts and models.
In this lecture you will learn how to generate a Platform JAR Module project.
In this lecture you will learn how to generate a Share UI JAR Module project.
This lecture provides a practical example of when to use AMPs.
Explore Alfresco's extension inspector, a runnable jar that analyzes server-side extensions against a chosen Alfresco version using inventories to detect file and spring bean overrides and classpath conflicts.
Analyze platform repository jar extensions with the extension inspector, building jars via Maven, comparing the inventory against Alfresco versions, and identifying conflicts and logging details.
Use the extension inspector to generate an inventory JSON for a non-included Alfresco version. Obtain community distribution war from Nexus, build the inventory, and run the inspector on extensions.
Explore using stand-alone jar/amp projects with an aggregator all-in-one to manage multi-developer Alfresco SDKs, versioning, Docker image builds, and release workflows via GitHub, Nexus, and Jenkins.
To be able to replicate a "real" content management project we should set up a remote maven repository where we can store and version the artifacts, such as JARs, for our project. This is similar to how Alfresco has its own Maven Repository at artifacts.alfresco.com.
Update the sdk parent pom to activate resources and docker related plugins, enabling runnable content model extensions, local testing with snapshots, and streamlined tagging and releasing.
In this lecture we will create an AIO project and clean it up making it ready to be used as an aggregator project. It will pull in other modules (platform, share, utils etc) from the local nexus and build the final artifact.
Learn to refactor an Alfresco content model into a dedicated rest API platform extension, separating web script logic and coordinating releases via a git and mvn-based aggregator workflow.
Let's see how we can create a Jenkins Pipeline that does a git clone on the Aggregator project and then builds the Docker Images.
Push docker images from a Jenkins pipeline to a Nexus private registry, tag with version, and publish platform and share images for staging and production.
This project template is called All-in-One as it contains everything you need to develop and test Platform/Repository and Share customisations. In this lecture we show how to generate a project based on this template and explain the structure of the project. It's for ACS 5.2 and uses SDK 3.0
In this lecture we look at the structure of a Platform JAR module. The structure is also applicable to Platform AMPs. For ACS 5.2 and SDK 3.0
In this lecture we look at the structure of a Share JAR module. The structure is also applicable to Share AMPs. For ACS 5.2 and SDK 3.0
Here we look at some of the more significant properties that can be configured for an AIO project. For ACS 5.2 and SDK 3.0
This lecture looks at how you can make sure you develop and run against the Alfresco version that you will be using in production.
Lecture showing how to compile, test, package, and install an AIO project. For ACS 5.2 and SDK 3.0
In this lecture we have a look at how the Alfresco Maven Plugin can be used to run the Alfresco server with the customisations applied (i.e. alfresco:run). There is no need to do a separate full Alfresco installation. For ACS 5.2 and SDK 3.0
The AIO project comes with a number of sample code extensions, both for the platform application (alfresco.war) in the form of a custom REST API (called Web Script in Alfresco lingo), and the UI (share.war) in the form of a custom Share Page (called Aikau Page in Alfresco lingo). We look at how to try them out in this lecture. For ACS 5.2 and SDK 3.0
In this lecture we look at the sample content model that comes with the AIO project. A domain specific content model is fundamental to any content management project, and this sample content model gives you a head start on how to implement one. For ACS 5.2 and SDK 3.0
Shows how to start the Alfresco server via the Alfresco Maven Plugin so it is ready for debugging of Java code. For ACS 5.2 and SDK 3.0
Alfresco SDK 3 includes a new module for integration testing, and a number of example integration tests. This lecture introduces this module and the sample tests.
This lecture shows you the extension project that is used when you only develop customisations for the platform/repository (i.e. the alfresco.war). For ACS 5.2 and SDK 3.0
This lecture shows you the extension project that is used when you only develop customisations for the Share UI (i.e. the share.war). For ACS 5.2 and SDK 3.0
In this lecture we introduce and set up hot-reloading with the open source HotSwap agent.
This lecture shows how to use the HotSwap agent to do hot-reloading of classes and resources for Platform/Repository extensions (i.e. customisations applied to alfresco.war). Enabling Rapid Application Development (RAD). HotSwap is an open source alternative to JRebel.
This lecture shows how to use the HotSwap agent to do hot-reloading of classes and resources for Share UI extensions (i.e. customisations applied to share.war). Enabling Rapid Application Development (RAD). HotSwap is an open source alternative to JRebel.
Compare Alfresco amps and jars, explain when to use amps vs jars, and describe installation, overwriting web resources (such as favicon), and dependency management in an all-in-one or standalone module.
Demonstrates when to use alfresco module packages (amps) to deliver non-provided libraries, override web resources, and build platform jars with maven assembly for alfresco deployments.
Developing extensions for Hyland Alfresco Content Management systems can be daunting at first. But if you spend some time getting to know the Software Development Kits (SDKs) available to aid you in developing extensions, then the development journey will be much more pleasant.
There are mainly two development kits available:
* The traditional In-Process SDK 4.x. This SDK has existed since the beginning of Alfresco and has evolved several times. We cover it in detail and even look at an earlier version, 3.x, when containers weren't common practice.
* The new Out-of-Process SDK 5.x. This SDK follows newer best practices of keeping your extensions outside the Alfresco application, enabling easier upgrades of Alfresco and independent development, deployment, and scaling of your extensions.
Larger development projects involving multiple developers usually require some infrastructure, such as Artifacts Repository and CI server, to be considered. We look at how you can use Nexus Repository manager to store stand-alone extensions and how to build them with Jenkins CI Server.
This course is mostly about Alfresco Content Services (ACS) development and the officially supported SDKs. But we will also look at an unofficial SDK for developing extensions for Alfresco Process Services (APS), just so you know it exists.
“Hyland Alfresco Developer - Software Development Kits (SDKs)” is an independently developed course by Martin Bergljung and has not been created, endorsed, or verified by Hyland Software, Inc.. Hyland Software, Inc. shall not have any liability with respect to the “Hyland Alfresco Developer - Software Development Kits (SDKs)” course offered by Martin Bergljung.