Skip to content

Releases: wttech/gradle-aem-plugin

Release 4.0.0

30 May 07:47

Choose a tag to compare

What's new

  • GUI notifications being displayed interactively when e.g CRX package has been deployed on instance, local instance setup completed, build finished or failed and many others notifications to achieve better developer experience and focus
  • customizable health checks for aemAwait (by default OSGi components checking for Sling Installer, JCR Package Manager)
  • fast mode for aemAwait when using -Paem.await.fast (no health checks and stability assurance steps)
  • ability to extremely easy deploy CRX packages by URLs (http/sftp/smb/local file) provided direcly via command line: aemSatisfy -Paem.satisfy.urls=[url1,url2]
  • new task aemRcp to easily copy JCR content between instances
  • handy default OSGi bundle manifest attributes generation (Bundle-Name using project.description etc)
  • bundle DSL for easier customization of OSGi specific JAR manifest attributes: aem { bundle { exportPackage "x.y.z" } } #177
  • ability to create local instances with custom passwords #161
  • improved support of configuration aemEmbed #177
  • more fail safe aemReload #150
  • pre-resolving AEM files and CRX packages to be satisfied (new task aemResolve)
  • richer output in aemDebug with plugin metadata and CI server related optimizations
  • upgraded BND tool from 3.5 to 4.0
  • compatibility with Gradle 5.x (fixed deprecations, warnings etc) #148
  • much more integration tests using Gradle TestKit covering built packages, effective AEM configuration changes

Code changes

Upgrade notes

In general, AEM config properties must be renamed, because it is breaking change.
Using new bundle DSL is absolutely optional.

For demonstrative purposes, see upgrade done for gradle-aem-multi.

AEM Config properties

When overriding config value using utility propParser (fallback chain of properties coming from env/system/cmd/default), now it is also available, but has different name: props.

Properties renamed:

  • vaultSkipProperties -> cleanSkipProperties
  • deployInstanceName -> instanceName
  • deployAuthorInstanceName -> instanceAuthorName
  • deploySnapshots -> packageSnapshots
  • deployEnvironment -> environment
  • deployConnectionTimeout -> instanceConnectionTimeout
  • deployConnectionUntrustedSsl -> instanceConnectionUntrustedSssl
  • localPackagePath -> packageLocalPath
  • remotePackagePath -> packageRemotePath
  • filesExcluded -> packageFilesExcluded
  • filesExpanded -> packageFilesExpanded
  • fileProperties -> packageFileProperties,
  • acHandling -> packageAcHandling
  • instancesPath -> createPath
  • instanceFilesPath -> createFilesPath
  • instanceFilesExpanded -> createFilesExpanded
  • awaitDelay -> awaitStableDelay
  • awaitInterval -> awaitStableInterval
  • awaitTimeout -> awaitStableTimeout
  • awaitTimes -> awaitStableTimes
  • awaitAssurances -> awaitStableAssurances
  • awaitCondition -> awaitStableCheck
  • awaitFail -> awaitResume (logic inversed)

Properties deleted:

  • deployParallel
  • dependBundlesTaskNames
  • dependContentTaskNames

New properties:

  • awaitStableState
  • awaitAvailableCheck
  • awaitHealthCheck
  • awaitHealthRetryTimes
  • awaitHealthRetryDelay
  • awaitFast
  • awaitFastDelay
  • bundleManifestAttributes
  • bundlePackage
  • bundlePackageOptions
  • bundleBndPath
  • notificationEnabled
  • notificationConfig
  • debugPackageDeployed

New Bundle DSL

Now below section:

jar {
    def pkg = 'com.company.aem.example.common'

    manifest {
        attributes([
           'Bundle-Name': project.description,
           'Bundle-SymbolicName': pkg,
           'Sling-Model-Packages': pkg,
           'Export-Package': "$pkg.*,org.hashids.*"
       ])
    }
}

Could be simplified to:

aem {
    config {
        bundlePackage = "com.company.aem.example.common"
    }
    bundle {
        exportPackage "org.hashids"
     }
}

Manifest attributes will be populated automatically if aem { config { bundleManifestAttributes = true } }.

  • Bundle-Name will grab value from project.description
  • Bundle-SymbolicName will grab value from aem.config.bundlePackage
  • Sling-Model-Packages will grab value from aem.config.bundlePackage
  • Export-Package will grab value from aem.config.bundlePackage.

All of these values still are overiddable e.g

aem {
    bundle {
        attribute 'Sling-Model-Packages', "com.company.aem.example.common.models"
    }
}

Release 4.0.0-beta3

29 May 08:15
0280638

Choose a tag to compare

Release 4.0.0-beta3 Pre-release
Pre-release

Release candidate.

Implemented #177 , #148

Release 4.0.0-beta2

28 May 07:39
8ecef6a

Choose a tag to compare

Release 4.0.0-beta2 Pre-release
Pre-release
  • Fixed #174
  • Implemented #171
  • Version 4.0.0 reached status feature freeze.

Release 4.0.0-beta

24 May 06:32
6fc5d58

Choose a tag to compare

Release 4.0.0-beta Pre-release
Pre-release

New features, improvements and bug fixes. Details: https://github.com/Cognifide/gradle-aem-plugin/milestone/35?closed=1

Upgrade notes will be provided within final 4.0.0 release which will arrive within few days. Stay tuned!

Release 3.1.2

16 Apr 13:24
6fc5d58

Choose a tag to compare

What's new

  • fixed regression introduced in 3.1.1, port in instance url was enforced, reversed previous behavior #155 , #154

Upgrade notes

When using instance URL with no port number specified, or port number ends with convention other than 02 (author) or 03 (publish), then type of instance need to be specified explicitly, proper sample definitions:

remoteInstance "http://aem-author.example.com", {
    typeName = "author"
}
remoteInstance "https://example.com", {
    typeName = "publish"
}
remoteInstance "https://192.168.10.1", {
    typeName = "author2"
}
remoteInstance "https://192.168.10.2", {
    typeName = "publish2"
}

Release 3.1.1

12 Apr 06:51
21695c7

Choose a tag to compare

What's new

  • new easier syntax for defining instances #142 , #151

Upgrade notes

No breaking changes, but it is recommended to use new instances DSL illustrated in documentation at section Work with local and/or remote AEM instances. Old way of defining instances is still supported, however it will be removed within future 4.0.0 release.

Release 3.1.0

09 Apr 06:17
82c01d7

Choose a tag to compare

What's new

  • task aemSatisfy now supports hooks for preparing (and finalizing) instance before (after) deploying packages in group on each instance. Also there is a hook called when satisfying each package group on all instances completed (for awaiting stable instances, as before), #121

In other words, now there is ability to even run groovy console script before/after installing some CRX package and even restarting whole instance.

aemSatisfy {
    packages {
        group 'tool.groovy-console', { 
            url('https://github.com/OlsonDigital/aem-groovy-console/releases/download/11.0.0/aem-groovy-console-11.0.0.zip') 
            config {
                instanceName="*-author" // additional filter intersecting 'deployInstanceName'
                initializer = { sync ->
                    logger.info("Installing Groovy Console on ${sync.instance}")
                }
                finalizer = { sync ->
                    logger.info("Installed Groovy Console on ${sync.instance}")
                }
                completer = {
                    logger.info("Reloading after installing Groovy Console")
                    reload {
                        delay = 3
                    }
                }
            }
    }
}
  • better logging with reasons reflecting actual package state on each instance for aemSatisfy -i, #121
> Task :aemSatisfy 
Caching disabled for task ':aemSatisfy': Caching has not been enabled for the task
Task ':aemSatisfy' is not up-to-date because:
  Task has not declared any outputs.
Satisfying group of packages 'dep.kotlin'.
Synchronizing 1 instance(s) in parallel mode
Synchronizing with: LocalInstance(httpUrl='http://localhost:7502', user='admin', password='*****', typeName='author', debugPort=17502)
Trying to find package by project properties: [group=org.jetbrains.kotlin][name=org.jetbrains.kotlin.osgi-bundle][version=1.2.21]
Package found by project properties.
Not satisfying package: C:\Users\krystian.panek\Projects\gradle-aem-multi\build\aem\aemSatisfy\download\f39c4abb\kotlin-osgi-bundle-1.2.21.zip (already installed).
Satisfying group of packages 'tool.search-webconsole-plugin'.
Synchronizing 1 instance(s) in parallel mode
Synchronizing with: LocalInstance(httpUrl='http://localhost:7502', user='admin', password='*****', typeName='author', debugPort=17502)
Trying to find package by project properties: [group=com.neva.felix.webconsole.plugins][name=com.neva.felix.webconsole.plugins.search][version=1.2.0]
Package found by project properties.
Not satisfying package: C:\Users\krystian.panek\Projects\gradle-aem-multi\build\aem\aemSatisfy\download\e7bb0bdf\search-webconsole-plugin-1.2.0.zip (already installed).
Satisfying group of packages 'tool.groovy-console'.
Synchronizing 1 instance(s) in parallel mode
Synchronizing with: LocalInstance(httpUrl='http://localhost:7502', user='admin', password='*****', typeName='author', debugPort=17502)
Trying to find package by project properties: [group=ICF Olson][name=aem-groovy-console][version=11.0.0]
Package found by project properties.
Not satisfying package: C:\Users\krystian.panek\Projects\gradle-aem-multi\build\aem\aemSatisfy\download\8b2758a2\aem-groovy-console-11.0.0.zip (already installed).

:aemSatisfy (Thread[Daemon worker Thread 2,5,main]) completed. Took 0.445 secs.

BUILD SUCCESSFUL in 2s

  • supporting untrused SSL connections by default, #146, thanks to @Skejven
  • pre-downloading packages to be satisfied (increasing speed of aemSetup), #123

Upgrade notes

  • If config.awaitDelay was specified, now it need to be removed and optionally config.assurances adjusted to cover that time (increased).

Release 3.0.9

05 Apr 06:26
5e76445

Choose a tag to compare

What's new

All changes / PR #145

  • better logging for aemSatisfy #144
  • local instance dir name simplified and multiple instance types per one environment (more than one author e.g author-master, author2 etc), related with tasks aemCreate / aemSetup #141

Upgrade notes

There is one breaking change having impact only when plugin user is using aemCreate / aemSetup tasks.

Before upgrading the plugin, please rename manually directory names on filesystem under config.instancesPath e.g local-author to author, local-publish to publish. The change simplifies name, because all instances are local so that prefix is just redundant. What is more, when aemSetup mechanism is being integrated with other tools like Chef, the directories with instances are most often named just author and publish, so that the changed names will just more fit / integration might be easier.

Release 3.0.8

22 Mar 06:59
bbdc97a

Choose a tag to compare

What's new

New config parameters added:

aem {
    config {
        cleanFilesDeleted = ['**/.vlt']
    }
}

Adds ability to specify which files will be deleted after running tasks: aemSync or only within aemClean.

Upgrade notes

Command line parameter names changed:

  • aem.vlt.filter -> aem.checkout.filterPath
  • aem.vlt.filterRoots -> aem.checkout.filterRoots

Release 3.0.7

28 Feb 16:09

Choose a tag to compare

What's new

  • fixed shell type in instance start/stop scripts #133
  • fixed SCR metadata generation for unit tests when jar.archivePath changed

Upgrade notes

Nothing to do.