Releases: wttech/gradle-aem-plugin
Release 4.0.0
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
aemAwaitwhen 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
aemRcpto easily copy JCR content between instances - handy default OSGi bundle manifest attributes generation (
Bundle-Nameusingproject.descriptionetc) - 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
aemDebugwith 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
- Issues and Pull Requests: https://github.com/Cognifide/gradle-aem-plugin/milestone/35?closed=1
- Commits / Diff: 3.1.2...4.0.0
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->cleanSkipPropertiesdeployInstanceName->instanceNamedeployAuthorInstanceName->instanceAuthorNamedeploySnapshots->packageSnapshotsdeployEnvironment->environmentdeployConnectionTimeout->instanceConnectionTimeoutdeployConnectionUntrustedSsl->instanceConnectionUntrustedSssllocalPackagePath->packageLocalPathremotePackagePath->packageRemotePathfilesExcluded->packageFilesExcludedfilesExpanded->packageFilesExpandedfileProperties->packageFileProperties,acHandling->packageAcHandlinginstancesPath->createPathinstanceFilesPath->createFilesPathinstanceFilesExpanded->createFilesExpandedawaitDelay->awaitStableDelayawaitInterval->awaitStableIntervalawaitTimeout->awaitStableTimeoutawaitTimes->awaitStableTimesawaitAssurances->awaitStableAssurancesawaitCondition->awaitStableCheckawaitFail->awaitResume(logic inversed)
Properties deleted:
deployParalleldependBundlesTaskNamesdependContentTaskNames
New properties:
awaitStableStateawaitAvailableCheckawaitHealthCheckawaitHealthRetryTimesawaitHealthRetryDelayawaitFastawaitFastDelaybundleManifestAttributesbundlePackagebundlePackageOptionsbundleBndPathnotificationEnablednotificationConfigdebugPackageDeployed
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-Namewill grab value fromproject.descriptionBundle-SymbolicNamewill grab value fromaem.config.bundlePackageSling-Model-Packageswill grab value fromaem.config.bundlePackageExport-Packagewill grab value fromaem.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
Release 4.0.0-beta2
Release 4.0.0-beta
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
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
What's new
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
What's new
- task
aemSatisfynow 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.awaitDelaywas specified, now it need to be removed and optionallyconfig.assurancesadjusted to cover that time (increased).
Release 3.0.9
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
What's new
- implemented #136
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.filterPathaem.vlt.filterRoots->aem.checkout.filterRoots
Release 3.0.7
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.