Compare commits

...

28 Commits

Author SHA1 Message Date
alfresco-build
b9331c365f [maven-release-plugin] prepare release alfresco-sdk-aggregator-3.0.0-beta-4 2016-09-23 10:02:44 +01:00
Ole Hejlskov
63bd9a63c0 Remove sources and javadoc plugin. This is already handled by the release plugin 2016-09-23 10:56:47 +02:00
alfresco-build
f1dbb608d9 [maven-release-plugin] prepare for next development iteration 2016-09-23 09:40:38 +01:00
alfresco-build
657d16b91c [maven-release-plugin] prepare release alfresco-sdk-aggregator-3.0.0-beta-4 2016-09-23 09:40:34 +01:00
alfresco-build
7739556c94 [maven-release-plugin] prepare for next development iteration 2016-09-23 09:14:01 +01:00
alfresco-build
d7b0805cef [maven-release-plugin] prepare release alfresco-sdk-aggregator-3.0.0-beta-4 2016-09-23 09:13:57 +01:00
Martin Bergljung
0b8db99cd8 Added debug.* scripts 2016-09-19 14:45:25 +01:00
Martin Bergljung
eba635c8f8 All logging controlled by src/test/resources/alfresco/extension/dev-log4j.properties, #392 2016-09-19 14:13:36 +01:00
Martin Bergljung
2782f30a42 Improved support for using different databases, #400 2016-09-16 17:53:08 +01:00
Samuel Langlois
a32a537206 internal-release profile allows publishing release in our Nexus repo 2016-09-15 17:01:08 +01:00
Martin Bergljung
49160034cf Upgraded to Community release 201609 EA and added API Explorer app to AIO and Platform module, #402 2016-09-15 14:08:03 +01:00
Martin Bergljung
50dac567c2 Added filtering of web resources added to AMP, #409 2016-09-15 12:58:08 +01:00
Martin Bergljung
9a7630acfb Added excludes for resource filtering, so we don't filter for example FTL, #407 2016-09-15 11:33:37 +01:00
Martin Bergljung
be11344137 Switched to props config for compiler plugin, #404 2016-09-14 10:14:19 +01:00
Martin Bergljung
db9d7d637c Add compiler plugin and set Java 7, #404 2016-09-14 09:12:34 +01:00
Martin Bergljung
04fe0678d7 Support for MySQL, PostgreSQL, and custom Tomcat dependencies, #400 2016-09-12 16:57:02 +01:00
Martin Bergljung
b46f173fb4 Added WAR artifact id property to platform jar project, #403 2016-09-12 14:09:05 +01:00
Martin Bergljung
d69f7e4937 Added private/enterprise repo to POMs, #394 2016-09-12 11:31:23 +01:00
Martin Bergljung
788347a5dd Support for overriding out-of-the-box web resources and including 3rd party libs, #389 2016-09-07 11:28:40 +01:00
Martin Bergljung
d6f11dd977 Added license directory placeholders 2016-09-06 09:50:39 +01:00
Martin Bergljung
f0955cff98 Changed where Enterprise license should be located, #395 2016-09-06 09:19:34 +01:00
Martin Bergljung
05b2cfbb1e Fix so JAR project files are not duplicated in WAR, #391 2016-09-05 15:23:53 +01:00
alfresco-build
558d4b422c [maven-release-plugin] prepare for next development iteration 2016-09-05 14:35:29 +01:00
alfresco-build
d040ceb60d [maven-release-plugin] prepare release alfresco-sdk-aggregator-3.0.0-beta-3 2016-09-05 14:35:25 +01:00
alfresco-build
a8db2ddde0 [maven-release-plugin] prepare for next development iteration 2016-09-05 14:25:15 +01:00
alfresco-build
c9d1878cb9 [maven-release-plugin] prepare release alfresco-sdk-aggregator-3.0.0-beta-3 2016-09-05 14:25:02 +01:00
Martin Bergljung
99c0a14220 Fix loading from META-INF in JAR, such as share-config-custom.xml, fix loading of resources such as /alfresco/test.html, #388 2016-08-26 09:12:17 +01:00
alfresco-build
6a1b09c102 [maven-release-plugin] prepare for next development iteration 2016-08-25 18:56:03 +01:00
76 changed files with 2569 additions and 462 deletions

View File

@@ -11,7 +11,7 @@
<parent>
<groupId>org.alfresco.maven</groupId>
<artifactId>alfresco-sdk-aggregator</artifactId>
<version>3.0.0-beta-2</version>
<version>3.0.0-beta-4</version>
<relativePath>../../pom.xml</relativePath>
</parent>

View File

@@ -17,7 +17,7 @@
<fileSet filtered="false" packaged="false" encoding="UTF-8">
<directory>src/main/assembly</directory>
<includes>
<include>**/*.xml</include>
<include>**</include>
</includes>
</fileSet>
<fileSet filtered="true" packaged="true" encoding="UTF-8">
@@ -39,26 +39,12 @@
</includes>
<excludes>
<exclude>**/*-context.xml</exclude>
<exclude>**/log4j.properties</exclude>
</excludes>
</fileSet>
<fileSet encoding="UTF-8" filtered="true" packaged="false">
<directory>src/main/resources</directory>
<includes>
<include>**/*-context.xml</include>
<include>**/log4j.properties</include>
</includes>
</fileSet>
<fileSet encoding="UTF-8" filtered="false">
<directory>src/test/resources</directory>
<includes>
<include>**</include>
</includes>
</fileSet>
<fileSet encoding="UTF-8" filtered="false">
<directory>src/test/properties</directory>
<includes>
<include>**/*.properties</include>
</includes>
</fileSet>
</fileSets>
@@ -66,8 +52,14 @@
<module id="${rootArtifactId}-share-jar"
name="${rootArtifactId}-share-jar"
dir="__rootArtifactId__-share-jar" >
dir="__rootArtifactId__-share-jar">
<fileSets>
<fileSet filtered="false" packaged="false" encoding="UTF-8">
<directory>src/main/assembly</directory>
<includes>
<include>**</include>
</includes>
</fileSet>
<fileSet filtered="true" packaged="true" encoding="UTF-8">
<directory>src/main/java</directory>
<includes>
@@ -102,27 +94,43 @@
<exclude>**/__artifactId__-example-widgets.xml</exclude>
</excludes>
</fileSet>
<fileSet filtered="true" packaged="false" encoding="UTF-8">
<directory>src/test/resources</directory>
<includes>
<include>**</include>
</includes>
</fileSet>
</fileSets>
</module>
</modules>
<fileSets>
<fileSet encoding="UTF-8">
<directory>src</directory>
<fileSet encoding="UTF-8" filtered="true">
<directory>src/test/resources</directory>
<includes>
<include>**/dev-log4j.properties</include>
</includes>
</fileSet>
<fileSet encoding="UTF-8" filtered="false">
<directory>src/test/resources</directory>
<includes>
<include>**</include>
</includes>
<excludes>
<exclude>**/dev-log4j.properties</exclude>
</excludes>
</fileSet>
<fileSet encoding="UTF-8" filtered="false">
<directory>src/test/properties</directory>
<includes>
<include>**/*.properties</include>
</includes>
</fileSet>
<fileSet encoding="UTF-8" filtered="false">
<directory>src/test/license</directory>
<includes>
<include>**</include>
</includes>
</fileSet>
<fileSet encoding="UTF-8">
<directory></directory>
<includes>
<include>debug.sh</include>
<include>debug.bat</include>
<include>run.sh</include>
<include>run.bat</include>
<include>README.md</include>

View File

@@ -12,12 +12,39 @@
<includeBaseDirectory>false</includeBaseDirectory>
<files>
<!-- Filter module.properties and put at top level in the AMP -->
<file>
<source>src/main/resources/alfresco/module/${project.artifactId}/module.properties</source>
<filtered>true</filtered>
</file>
<!-- Include AMP -> WAR mapping file (needed for custom mappings) -->
<file>
<source>src/main/assembly/file-mapping.properties</source>
<filtered>false</filtered>
</file>
</files>
<fileSets>
<!-- Anything in the assembly/lib directory will end up in the /lib directory in the AMP -->
<fileSet>
<directory>src/main/assembly/lib</directory>
<outputDirectory>lib</outputDirectory>
<excludes>
<exclude>README.md</exclude>
</excludes>
</fileSet>
<!-- Anything in the assembly/web directory will end up in the /web directory in the AMP -->
<fileSet>
<directory>src/main/assembly/web</directory>
<outputDirectory>web</outputDirectory>
<filtered>true</filtered> <!-- Will filter files and substitute POM props such as for example ${project.name} -->
<excludes>
<exclude>README.md</exclude>
</excludes>
</fileSet>
</fileSets>
<!-- Include the project artifact (JAR) in the /lib directory in the AMP -->
<dependencySets>
<dependencySet>
<outputDirectory>lib</outputDirectory>

View File

@@ -0,0 +1,27 @@
# Custom AMP to WAR location mappings
#
# The following property can be used to include the standard set of mappings.
# The contents of this file will override any defaults. The default is
# 'true', i.e. the default mappings will be augmented or modified by values in
# this file.
#
# Default mappings are:
#
# /config=/WEB-INF/classes
# /lib=/WEB-INF/lib
# /licenses=/WEB-INF/licenses
# /web/jsp=/jsp
# /web/css=/css
# /web/images=/images
# /web/scripts=/scripts
# /web/php=/php
#
include.default=true
#
# Custom mappings. If 'include.default' is false, then this is the complete set.
# Map /web to / in AMP so we can override things like favicon.ico
#
/web=/

View File

@@ -0,0 +1,21 @@
# 3rd party libraries (JARs) that should be included in WAR
Put here any 3rd party libraries (JARs) that are needed by customizations,
but that are not part of the out-of-the-box libraries in the *alfresco/WEB-INF/lib*
directory.
**Note**. Module dependency needs to be set to amp for the libs to be applied by MMT:
`
<moduleDependency>
<groupId>${project.groupId}</groupId>
<artifactId>some-platform-jar</artifactId>
<version>${project.version}</version>
<type>amp</type>
</moduleDependency>
`
**Important**. If you need to use a library that is available out-of-the-box, then
include it as a *provided* dependency in the module.

View File

@@ -0,0 +1,22 @@
# Web resources that should override out-of-the-box files
Put here any web resources that should override out-of-the-box
web resources, such as favicon.ico. They will then end up in the
*/web* directory in the AMP, and applied to the WAR, and override
any existing web resources in the Alfresco.WAR.
**Note**. Module dependency needs to be set to amp for the web resources to be applied by MMT:
`
<moduleDependency>
<groupId>${project.groupId}</groupId>
<artifactId>some-platform-jar</artifactId>
<version>${project.version}</version>
<type>amp</type>
</moduleDependency>
`
**Important**. New web resources should not be located here, but instead
in the usual place in the *src/main/resources/META-INF/resources* directory.

View File

@@ -35,7 +35,7 @@ import org.apache.commons.logging.LogFactory;
* @author Maurizio Pillitu
*/
public class DemoComponent extends AbstractModuleComponent {
Log log = LogFactory.getLog(DemoComponent.class);
private static Log logger = LogFactory.getLog(DemoComponent.class);
private NodeService nodeService;
@@ -55,8 +55,8 @@ public class DemoComponent extends AbstractModuleComponent {
@Override
protected void executeInternal() throws Throwable {
System.out.println("DemoComponent has been executed");
log.debug("Test debug logging. Congratulation your JAR Module is working");
log.info("This is only for information purposed. Better remove me from the log in Production");
logger.debug("Test debug logging. Congratulation your JAR Module is working");
logger.info("This is only for information purposed. Better remove me from the log in Production");
}
/**

View File

@@ -23,6 +23,8 @@ import org.springframework.extensions.webscripts.Cache;
import org.springframework.extensions.webscripts.DeclarativeWebScript;
import org.springframework.extensions.webscripts.Status;
import org.springframework.extensions.webscripts.WebScriptRequest;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import java.util.HashMap;
import java.util.Map;
@@ -34,10 +36,15 @@ import java.util.Map;
* @since 2.1.0
*/
public class HelloWorldWebScript extends DeclarativeWebScript {
private static Log logger = LogFactory.getLog(HelloWorldWebScript.class);
protected Map<String, Object> executeImpl(
WebScriptRequest req, Status status, Cache cache) {
Map<String, Object> model = new HashMap<String, Object>();
model.put("fromJava", "HelloFromJava");
logger.debug("Your 'Hello World' Web Script was called!");
return model;
}
}

View File

@@ -18,6 +18,12 @@
<value>alfresco/module/${project.artifactId}/model/workflow-model.xml</value>
</list>
</property>
<property name="labels">
<list>
<!-- Bootstrap Resource Bundles for the content model types, aspects, properties etc -->
<value>alfresco/module/${project.artifactId}/messages/content-model</value>
</list>
</property>
</bean>
<bean id="${package}.sampleprocess.workflowBootstrap" parent="workflowDeployer">

View File

@@ -25,15 +25,15 @@
<bean id="${package}.exampleBean" class="${package}.platformsample.Demo" init-method="init" />
<!-- A simple module component that will be executed once.
Note. this module component will only be executed once, and then there will be an entry for it in the Repo.
So doing for example $ mvn clean install -Prun twice will only execute this component the first time.
Note. this module component will only be executed once, and then there will be an entry for it in the Repo DB.
So doing for example $ mvn clean install alfresco:run twice will only execute this component the first time.
You need to remove /alf_data_dev for it to be executed again. -->
<bean id="${package}.exampleComponent" class="${package}.platformsample.DemoComponent" parent="module.baseComponent" >
<property name="moduleId" value="${artifactId}" /> <!-- See module.properties -->
<property name="name" value="exampleComponent" />
<property name="description" value="A demonstration component" />
<property name="sinceVersion" value="1.0" />
<property name="appliesFromVersion" value="1.0" />
<property name="appliesFromVersion" value="0.99" /> <!-- 1.0 would not work here when using SNAPSHOT version in project -->
<property name="nodeService" ref="NodeService" />
<property name="nodeLocatorService" ref="nodeLocatorService" />
</bean>

View File

@@ -1,43 +0,0 @@
#set( $symbol_pound = '#' )
#set( $symbol_dollar = '$' )
#set( $symbol_escape = '\' )
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#-----------------------------------------------------------------------
# ${artifactId} module log4j.properties
#
# NOTE
# ----
# Log4j uses the following logging levels:
# debug,info,warn,error,fatal
#
# To set the logging level of {fullClassName} to {loglevel},
# add a line to this file of the following form:
#
# log4j.logger.{fullClassName}={loglevel}
#
# For example, to make 'com.example.MyExample' produce 'debug'
# logs, add a line like this:
#
# log4j.logger.com.example.MyExample=debug
#
#
# WARNING
# -------
# Log properties in this log4j.properties file override/augment
# those in the webapp's main log4j.properties.
#
#-----------------------------------------------------------------------
log4j.logger.${package}.platformsample.DemoComponent=debug

View File

@@ -0,0 +1,6 @@
# This file should contain content model labels
acme_contentModel.type.acme_document.title=ACME Document
acme_contentModel.aspect.acme_securityClassified.title=ACME Security Classified
acme_contentModel.property.acme_documentId.title=Document Id
acme_contentModel.property.acme_securityClassification.title=Security Classification

View File

@@ -30,7 +30,15 @@
<groupId>org.alfresco.surf</groupId>
<artifactId>spring-surf-api</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>

View File

@@ -10,13 +10,41 @@
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<files>
<!-- Filter module.properties and put at top level in the AMP -->
<file>
<source>${project.basedir}/src/main/resources/alfresco/module/${project.artifactId}/module.properties</source>
<source>src/main/resources/alfresco/module/${project.artifactId}/module.properties</source>
<filtered>true</filtered>
</file>
<!-- Include AMP -> WAR mapping file (needed for custom mappings) -->
<file>
<source>src/main/assembly/file-mapping.properties</source>
<filtered>false</filtered>
</file>
</files>
<fileSets>
<!-- Anything in the assembly/lib directory will end up in the /lib directory in the AMP -->
<fileSet>
<directory>src/main/assembly/lib</directory>
<outputDirectory>lib</outputDirectory>
<excludes>
<exclude>README.md</exclude>
</excludes>
</fileSet>
<!-- Anything in the assembly/web directory will end up in the /web directory in the AMP -->
<fileSet>
<directory>src/main/assembly/web</directory>
<outputDirectory>web</outputDirectory>
<filtered>true</filtered> <!-- Will filter files and substitute POM props such as for example ${project.name} -->
<excludes>
<exclude>README.md</exclude>
</excludes>
</fileSet>
</fileSets>
<!-- Include the project artifact (JAR) in the /lib directory in the AMP -->
<dependencySets>
<dependencySet>
<outputDirectory>lib</outputDirectory>

View File

@@ -0,0 +1,27 @@
# Custom AMP to WAR location mappings
#
# The following property can be used to include the standard set of mappings.
# The contents of this file will override any defaults. The default is
# 'true', i.e. the default mappings will be augmented or modified by values in
# this file.
#
# Default mappings are:
#
# /config=/WEB-INF/classes
# /lib=/WEB-INF/lib
# /licenses=/WEB-INF/licenses
# /web/jsp=/jsp
# /web/css=/css
# /web/images=/images
# /web/scripts=/scripts
# /web/php=/php
#
include.default=true
#
# Custom mappings. If 'include.default' is false, then this is the complete set.
# Map /web to / in AMP so we can override things like favicon.ico
#
/web=/

View File

@@ -0,0 +1,19 @@
# 3rd party libraries (JARs) that should be included in WAR
Put here any 3rd party libraries (JARs) that are needed by customizations,
but that are not part of the out-of-the-box libraries in the *share/WEB-INF/lib*
directory.
**Note**. Module dependency needs to be set to amp for the libs to be applied by MMT:
`
<moduleDependency>
<groupId>${project.groupId}</groupId>
<artifactId>some-share-jar</artifactId>
<version>${project.version}</version>
<type>amp</type>
</moduleDependency>
`
**Important**. If you need to use a library that is available out-of-the-box, then
include it as a *provided* dependency in the module.

View File

@@ -0,0 +1,22 @@
# Web resources that should override out-of-the-box files
Put here any web resources that should override out-of-the-box
web resources, such as favicon.ico. They will then end up in the
*/web* directory in the AMP, and applied to the WAR, and override
any existing web resources in the Share.WAR.
**Note**. Module dependency needs to be set to amp for the web resources to be applied by MMT:
`
<moduleDependency>
<groupId>${project.groupId}</groupId>
<artifactId>some-share-jar</artifactId>
<version>${project.version}</version>
<type>amp</type>
</moduleDependency>
`
**Important**. New web resources should not be located here, but instead
in the usual place in the *src/main/resources/META-INF/resources/<module-id>/* directory.

View File

@@ -0,0 +1,420 @@
<!-- Share configuration related to this particular Share module extension, such as:
- Doclib action config
- Form config
- Aspect and Type config
- Advanced Search
Note. Any configuration related to the whole Share.war webapp
(i.e. not specific to this share extension) should be
placed in the environment specific config file:
alfresco/tomcat/shared/classes/alfresco/web-extension/share-config-custom.xml
-->
<alfresco-config>
<!--================================================================================================================
Make custom types and aspects visible in "Change Type" and "Manage Aspects" actions.
This will also make them visible when creating rules.
(will be merged with out-of-the-box configured types and aspects)
=============================================================================================================-->
<config evaluator="string-compare" condition="DocumentLibrary">
<aspects>
<visible>
<aspect name="acme:securityClassified"/>
</visible>
<addable> <!-- defaults to visible config -->
</addable>
<removeable> <!-- defaults to visible config -->
</removeable>
</aspects>
<types>
<!-- Define the ACME base doc type as decedent from cm:content -->
<type name="cm:content">
<subtype name="acme:document"/>
</type>
</types>
</config>
<!--================================================================================================================
Advanced Search Forms for types
(search forms for aspects are not available)
=============================================================================================================-->
<config evaluator="string-compare" condition="AdvancedSearch" replace="true">
<advanced-search>
<forms>
<!-- Standard out-of-the-box types -->
<form labelId="search.form.label.cm_content" descriptionId="search.form.desc.cm_content">cm:content
</form>
<form labelId="search.form.label.cm_folder" descriptionId="search.form.desc.cm_folder">cm:folder</form>
<!-- Custom type -->
<form labelId="form.label.advancedsearch.acmeDocument"
descriptionId="form.description.advancedsearch.acmeDocument">acme:document
</form>
</forms>
</advanced-search>
</config>
<!--================================================================================================================
View, Edit, Create, and Search forms for custom types
The following form configurations for the custom types
have not been created from scratch. We have instead copied
out-of-the-box form configurations for cm:content and cm:folder
from the tomcat/webapps/share/WEB-INF/classes/alfresco/share-form-config.xml file
in a standard Alfresco installation (with the version matching)
and used them as a starting point.
=============================================================================================================-->
<!-- __________________________________ acme:document base type _________________________________________________-->
<!-- View and Edit forms for acme:document -->
<config evaluator="node-type" condition="acme:document">
<forms>
<!-- Default form configuration for the cm:content type -->
<form>
<field-visibility>
<show id="cm:name"/>
<show id="cm:title" force="true"/>
<show id="cm:description" force="true"/>
<show id="mimetype"/>
<show id="cm:author" force="true"/>
<show id="size" for-mode="view"/>
<show id="cm:creator" for-mode="view"/>
<show id="cm:created" for-mode="view"/>
<show id="cm:modifier" for-mode="view"/>
<show id="cm:modified" for-mode="view"/>
<!-- tags and categories -->
<show id="cm:taggable" for-mode="edit" force="true"/>
<show id="cm:categories"/>
<!-- cm:dublincore aspect -->
<show id="cm:publisher"/>
<show id="cm:contributor"/>
<show id="cm:type"/>
<show id="cm:identifier"/>
<show id="cm:dcsource"/>
<show id="cm:coverage"/>
<show id="cm:rights"/>
<show id="cm:subject"/>
<!-- cm:complianceable aspect -->
<show id="cm:removeAfter"/>
<!-- cm:effectivity aspect -->
<show id="cm:from"/>
<show id="cm:to"/>
<!-- cm:summarizable aspect -->
<show id="cm:summary"/>
<!-- cm:translatable aspect -->
<show id="cm:translations"/>
<!-- cm:localizable aspect -->
<show id="cm:locale"/>
<!-- cm:ownable aspect -->
<show id="cm:owner"/>
<!-- cm:attachable aspect -->
<show id="cm:attachments"/>
<!-- cm:emailed aspect -->
<show id="cm:originator"/>
<show id="cm:addressee"/>
<show id="cm:addressees"/>
<show id="cm:sentdate"/>
<show id="cm:subjectline"/>
<!-- exif:exif aspect -->
<show id="exif:dateTimeOriginal"/>
<show id="exif:pixelXDimension"/>
<show id="exif:pixelYDimension"/>
<show id="exif:exposureTime"/>
<show id="exif:fNumber"/>
<show id="exif:flash"/>
<show id="exif:focalLength"/>
<show id="exif:isoSpeedRatings"/>
<show id="exif:manufacturer"/>
<show id="exif:model"/>
<show id="exif:software"/>
<show id="exif:orientation"/>
<show id="exif:xResolution"/>
<show id="exif:yResolution"/>
<show id="exif:resolutionUnit"/>
<!-- audio:audio aspect -->
<show id="audio:album"/>
<show id="audio:artist"/>
<show id="audio:composer"/>
<show id="audio:engineer"/>
<show id="audio:genre"/>
<show id="audio:trackNumber"/>
<show id="audio:releaseDate"/>
<show id="audio:sampleRate"/>
<show id="audio:sampleType"/>
<show id="audio:channelType"/>
<show id="audio:compressor"/>
<!-- cm:indexControl aspect -->
<show id="cm:isIndexed"/>
<show id="cm:isContentIndexed"/>
<!-- cm:geographic aspect -->
<show id="cm:latitude"/>
<show id="cm:longitude"/>
<!-- surf:widget aspect -->
<show id="surf:widgetType"/>
<show id="surf:mid"/>
<show id="surf:label"/>
<!-- ACME custom props -->
<show id="acme:documentId" force="true"/>
<show id="acme:securityClassification"/>
</field-visibility>
<appearance>
<field id="cm:name">
<control>
<control-param name="maxLength">255</control-param>
</control>
</field>
<field id="cm:title">
<control template="/org/alfresco/components/form/controls/textfield.ftl"/>
</field>
<field id="cm:description">
<control>
<control-param name="activateLinks">true</control-param>
</control>
</field>
<set id="cm:content2cols" template="/org/alfresco/components/form/2-column-set.ftl"/>
<field set="cm:content2cols" id="mimetype">
<control template="/org/alfresco/components/form/controls/mimetype.ftl"/>
</field>
<field set="cm:content2cols" id="size">
<control template="/org/alfresco/components/form/controls/size.ftl"/>
</field>
<field set="cm:content2cols" id="cm:creator"/>
<field set="cm:content2cols" id="cm:created"/>
<field set="cm:content2cols" id="cm:modifier"/>
<field set="cm:content2cols" id="cm:modified"/>
<field id="cm:taggable">
<control>
<control-param name="compactMode">true</control-param>
<control-param name="params">aspect=cm:taggable</control-param>
<control-param name="createNewItemUri">/api/tag/workspace/SpacesStore</control-param>
<control-param name="createNewItemIcon">tag</control-param>
</control>
</field>
<field id="cm:categories">
<control>
<control-param name="compactMode">true</control-param>
</control>
</field>
<field id="cm:originator" read-only="true"/>
<field id="cm:addressee" read-only="true"/>
<field id="cm:addressees" read-only="true"/>
<field id="cm:sentdate" read-only="true"/>
<field id="cm:subjectline" read-only="true"/>
<!-- ACME Props appearance -->
<set id="acmeDocSet" appearance="bordered-panel" label-id="form.set.label.acme.document"/>
<field id="acme:documentId" label-id="form.field.label.acme.documentId" set="acmeDocSet">
<control template="/org/alfresco/components/form/controls/textfield.ftl"/>
</field>
<field id="acme:securityClassification" label-id="form.field.label.acme.securityClassification"
set="acmeDocSet"/>
</appearance>
</form>
<!-- Document Library pop-up Edit Metadata form -->
<form id="doclib-simple-metadata">
<field-visibility>
<show id="cm:name"/>
<show id="cm:title" force="true"/>
<show id="cm:description" force="true"/>
<!-- tags and categories -->
<show id="cm:taggable" for-mode="edit" force="true"/>
<show id="cm:categories"/>
<!-- ACME custom props -->
<show id="acme:documentId" force="true"/>
<show id="acme:securityClassification"/>
</field-visibility>
<edit-form template="../documentlibrary/forms/doclib-simple-metadata.ftl"/>
<appearance>
<field id="cm:name">
<control>
<control-param name="maxLength">255</control-param>
</control>
</field>
<field id="cm:title">
<control template="/org/alfresco/components/form/controls/textfield.ftl"/>
</field>
<field id="cm:description">
<control>
<control-param name="activateLinks">true</control-param>
</control>
</field>
<field id="cm:taggable">
<control>
<control-param name="compactMode">true</control-param>
<control-param name="params">aspect=cm:taggable</control-param>
<control-param name="createNewItemUri">/api/tag/workspace/SpacesStore</control-param>
<control-param name="createNewItemIcon">tag</control-param>
</control>
</field>
<field id="cm:categories">
<control>
<control-param name="compactMode">true</control-param>
</control>
</field>
<!-- ACME Props appearance -->
<set id="acmeDocSet" appearance="bordered-panel" label-id="form.set.label.acme.document"/>
<field id="acme:documentId" label-id="form.field.label.acme.documentId" set="acmeDocSet">
<control template="/org/alfresco/components/form/controls/textfield.ftl"/>
</field>
<field id="acme:securityClassification" label-id="form.field.label.acme.securityClassification"
set="acmeDocSet"/>
</appearance>
</form>
<!-- Document Library Inline Edit form -->
<form id="doclib-inline-edit">
<field-visibility>
<show id="cm:name"/>
<show id="cm:content" force="true"/>
<show id="cm:title" force="true"/>
<show id="cm:description" force="true"/>
<!-- ACME custom props -->
<show id="acme:documentId" force="true"/>
<show id="acme:securityClassification"/>
</field-visibility>
<appearance>
<field id="cm:name">
<control>
<control-param name="maxLength">255</control-param>
</control>
</field>
<field id="cm:title">
<control template="/org/alfresco/components/form/controls/textfield.ftl"/>
</field>
<field id="cm:content" label-id="">
<control>
<control-param name="editorAppearance">explorer</control-param>
<control-param name="forceEditor">true</control-param>
</control>
</field>
<!-- ACME Props appearance -->
<set id="acmeDocSet" appearance="bordered-panel" label-id="form.set.label.acme.document"/>
<field id="acme:documentId" label-id="form.field.label.acme.documentId" set="acmeDocSet">
<control template="/org/alfresco/components/form/controls/textfield.ftl"/>
</field>
<field id="acme:securityClassification" label-id="form.field.label.acme.securityClassification"
set="acmeDocSet"/>
</appearance>
</form>
</forms>
</config>
<!-- Create and search forms for acme:document -->
<config evaluator="model-type" condition="acme:document">
<forms>
<form>
<field-visibility>
<show id="cm:name"/>
<show id="cm:content" force="true"/>
<show id="cm:title" force="true"/>
<show id="cm:description" force="true"/>
<show id="mimetype"/>
<show id="app:editInline" force="true"/>
<!-- ACME custom props -->
<show id="acme:documentId" force="true"/>
<show id="acme:securityClassification"/>
</field-visibility>
<appearance>
<field id="cm:name">
<control>
<control-param name="maxLength">255</control-param>
</control>
</field>
<field id="cm:title">
<control template="/org/alfresco/components/form/controls/textfield.ftl"/>
</field>
<field id="cm:content" label-id="">
<control>
<control-param name="editorAppearance">explorer</control-param>
</control>
</field>
<field id="mimetype">
<control template="/org/alfresco/components/form/controls/hidden.ftl">
<control-param name="contextProperty">mimeType</control-param>
</control>
</field>
<field id="app:editInline">
<control template="/org/alfresco/components/form/controls/hidden.ftl">
<control-param name="contextProperty">editInline</control-param>
</control>
</field>
<!-- ACME Props appearance -->
<set id="acmeDocSet" appearance="bordered-panel" label-id="form.set.label.acme.document"/>
<field id="acme:documentId" label-id="form.field.label.acme.documentId" set="acmeDocSet">
<control template="/org/alfresco/components/form/controls/textfield.ftl"/>
</field>
<field id="acme:securityClassification" label-id="form.field.label.acme.securityClassification"
set="acmeDocSet"/>
</appearance>
</form>
<!-- Search form -->
<form id="search">
<field-visibility>
<show id="cm:name"/>
<show id="cm:title" force="true"/>
<show id="cm:description" force="true"/>
<show id="mimetype"/>
<show id="cm:modified"/>
<show id="cm:modifier"/>
<!-- ACME custom props -->
<show id="acme:documentId" force="true"/>
<show id="acme:securityClassification"/>
</field-visibility>
<appearance>
<field id="mimetype">
<control template="/org/alfresco/components/form/controls/mimetype.ftl"/>
</field>
<field id="cm:modifier">
<control>
<control-param name="forceEditable">true</control-param>
</control>
</field>
<field id="cm:modified">
<control template="/org/alfresco/components/form/controls/daterange.ftl"/>
</field>
<!-- ACME Props appearance -->
<set id="acmeDocSet" appearance="bordered-panel" label-id="form.set.label.acme.document"/>
<field id="acme:documentId" label-id="form.field.label.acme.documentId" set="acmeDocSet">
<control template="/org/alfresco/components/form/controls/textfield.ftl"/>
</field>
<field id="acme:securityClassification" label-id="form.field.label.acme.securityClassification"
set="acmeDocSet"/>
</appearance>
</form>
</forms>
</config>
</alfresco-config>

View File

@@ -1,14 +0,0 @@
<!-- Share configuration related to this particular Share module extension, such as:
- Doclib action config
- Form config
- Aspect and Type config
Note. Any configuration related to the whole Share.war webapp
(i.e. not specific to this share extension) should be
placed in the environment specific config:
allinone/share-war/src/main/resources/alfresco/web-extension/share-config-custom.xml file
-->
<alfresco-config>
</alfresco-config>

View File

@@ -6,4 +6,20 @@
# Doc Lib Action Forms labels
#
# Labels for custom types and aspects
# Used in "Manage Aspects" and "Change Type" dialogs
#
type.acme_document=ACME Document
aspect.acme_securityClassified=Security Classified
# View,Edit,Search,Create Form labels for types and aspects
#
form.set.label.acme.document= ACME Document Information
form.field.label.acme.documentId=ACME Document Id
form.field.label.acme.securityClassification=Security Classification
# Advanced Search Form labels (only for types)
#
form.label.advancedsearch.acmeDocument=ACME Documents
form.description.advancedsearch.acmeDocument=Search for any ACME Documents

View File

@@ -0,0 +1,9 @@
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Dev environment startup script for Alfresco Community ::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
@echo off
set MAVEN_OPTS=-Xms256m -Xmx2G
mvnDebug clean install alfresco:run

View File

@@ -0,0 +1,3 @@
#!/bin/bash
MAVEN_OPTS="-Xms256m -Xmx2G" mvnDebug clean install alfresco:run

View File

@@ -10,6 +10,7 @@
<packaging>pom</packaging>
<properties>
<!-- Alfresco Maven Plugin version to use -->
<alfresco.sdk.version>@@alfresco.sdk.parent.version@@</alfresco.sdk.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -29,43 +30,33 @@
<!-- Properties used in dependency declarations, you don't need to change these -->
<alfresco.groupId>org.alfresco</alfresco.groupId>
<alfresco.platform.war.artifactId>alfresco-platform</alfresco.platform.war.artifactId>
<alfresco.share.war.artifactId>share</alfresco.share.war.artifactId>
<!-- Platform WAR artifact, change to 'alfresco-enterprise' if using Enterprise Edition -->
<alfresco.platform.war.artifactId>alfresco-platform</alfresco.platform.war.artifactId>
<!-- Alfresco Platform and Share webapp versions, these are the original Alfresco webapps that will be
customized and then deployed and run by the tomcat maven plugin when
executing for example $ mvn clean install alfresco:run -->
<alfresco.platform.version>5.2.a-EA</alfresco.platform.version>
<alfresco.share.version>5.1.g</alfresco.share.version>
<alfresco.platform.version>5.2.b-EA</alfresco.platform.version>
<alfresco.share.version>5.2.a-EA</alfresco.share.version>
<!-- Alfresco Surf version, if you change Share version you might need to change Surf version -->
<alfresco.surf.version>6.5</alfresco.surf.version>
<alfresco.surf.version>6.6</alfresco.surf.version>
<!-- Aikau framework version, it is released separately, so it can be useful to be able
to bring in newer versions with bug fixes etc -->
<aikau.version>1.0.82</aikau.version>
<!-- Alfresco Repo Database configuration.
By default it uses a flat file H2 database to be able to run embedded.
The H2 database implementation is brought in via the tomcat7-maven-plugin as a dependency.
The data files for the H2 database will be created in a relative path, such as alf_data_dev/h2_data/alf_dev,
see alfresco.db.url below.
For more information about the db parameters see:http://www.h2database.com/html/features.html
-->
<alfresco.db.name>alf_dev</alfresco.db.name>
<alfresco.db.username>alfresco</alfresco.db.username>
<alfresco.db.password>alfresco</alfresco.db.password>
<alfresco.db.params>AUTO_SERVER=TRUE;DB_CLOSE_ON_EXIT=FALSE;LOCK_TIMEOUT=10000;MVCC=FALSE;LOCK_MODE=0
</alfresco.db.params>
<alfresco.db.url>jdbc:h2:${alfresco.data.location}/h2_data/${alfresco.db.name};${alfresco.db.params}
</alfresco.db.url>
<alfresco.db.datasource.class>org.h2.jdbcx.JdbcDataSource</alfresco.db.datasource.class>
<aikau.version>1.0.85</aikau.version>
<!-- JRebel Hot reloading of classpath stuff and web resource stuff -->
<jrebel.version>1.1.6</jrebel.version>
<!-- Environment to use, Alfresco Maven Plugin will copy alfresco-global.properties from this directory -->
<!-- Environment to use, Alfresco Maven Plugin will
copy alfresco-global-*.properties files from this directory, such as src/test/properties/local -->
<env>local</env>
<!-- Compile with Java 7, default is 5 -->
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
<dependencyManagement>
@@ -153,10 +144,82 @@
</dependency>
</dependencies>
</plugin>
<!-- Filter resources in any sub-project with this config -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.1</version>
<configuration>
<encoding>UTF-8</encoding>
<nonFilteredFileExtensions> <!-- jpg, jpeg, gif, bmp and png are added automatically -->
<nonFilteredFileExtension>ftl</nonFilteredFileExtension>
<nonFilteredFileExtension>acp</nonFilteredFileExtension>
<nonFilteredFileExtension>svg</nonFilteredFileExtension>
<nonFilteredFileExtension>pdf</nonFilteredFileExtension>
<nonFilteredFileExtension>doc</nonFilteredFileExtension>
<nonFilteredFileExtension>docx</nonFilteredFileExtension>
<nonFilteredFileExtension>xls</nonFilteredFileExtension>
<nonFilteredFileExtension>xlsx</nonFilteredFileExtension>
<nonFilteredFileExtension>ppt</nonFilteredFileExtension>
<nonFilteredFileExtension>pptx</nonFilteredFileExtension>
<nonFilteredFileExtension>bin</nonFilteredFileExtension>
<nonFilteredFileExtension>lic</nonFilteredFileExtension>
<nonFilteredFileExtension>swf</nonFilteredFileExtension>
<nonFilteredFileExtension>zip</nonFilteredFileExtension>
<nonFilteredFileExtension>msg</nonFilteredFileExtension>
<nonFilteredFileExtension>jar</nonFilteredFileExtension>
<nonFilteredFileExtension>ttf</nonFilteredFileExtension>
<nonFilteredFileExtension>eot</nonFilteredFileExtension>
<nonFilteredFileExtension>woff</nonFilteredFileExtension>
<nonFilteredFileExtension>woff2</nonFilteredFileExtension>
<nonFilteredFileExtension>css</nonFilteredFileExtension>
<nonFilteredFileExtension>ico</nonFilteredFileExtension>
<nonFilteredFileExtension>psd</nonFilteredFileExtension>
<nonFilteredFileExtension>js</nonFilteredFileExtension>
</nonFilteredFileExtensions>
</configuration>
</plugin>
</plugins>
</pluginManagement>
<!-- Make sure resources in sub-projects are filtered -->
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<plugins>
<!-- Filter the test resource files in the AIO parent project, and do property substitutions.
We need this config so this is done before the Alfresco Maven Plugin 'run' is executed. -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.1</version>
<inherited>false</inherited>
<!-- Run only for the AIO parent Project -->
<executions>
<execution>
<id>copy-and-filter-test-resources</id>
<phase>validate</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${project.build.testOutputDirectory}</outputDirectory>
<resources>
<testResource>
<directory>src/test/resources</directory>
<filtering>true</filtering>
</testResource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
<!--
The Alfresco Maven Plugin contains all the logic to run the extension
in an embedded Tomcat with the H2 database.
@@ -177,6 +240,8 @@
<enableSolr>true</enableSolr>
<!-- We need Share webapp, so we got a UI for working with the Repo -->
<enableShare>true</enableShare>
<!-- Enable the REST API Explorer -->
<enableApiExplorer>true</enableApiExplorer>
<!--
JARs and AMPs that should be overlayed/applied to the Platform/Repository WAR
@@ -203,8 +268,8 @@
-->
<shareModules>
<moduleDependency>
<!-- Bring in a newer version, can coexist with older versions in the WAR disttribution,
newest version is picked -->
<!-- Bring in a newer version of Aikau, can coexist with older versions in the
WAR distribution, newest version is picked. -->
<groupId>${alfresco.groupId}</groupId>
<artifactId>aikau</artifactId>
<version>${aikau.version}</version>
@@ -220,33 +285,6 @@
</configuration>
</plugin>
<!-- Filter the test resource files in the AIO parent project, and do property substitutions.
We need this here to get it done before the Alfresco Maven Plugin run is executed. -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.1</version>
<inherited>false</inherited> <!-- Run only for the AIO parent Project -->
<executions>
<execution>
<id>copy-and-filter-test-resources</id>
<phase>validate</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${project.build.testOutputDirectory}</outputDirectory>
<resources>
<testResource>
<directory>src/test/resources</directory>
<filtering>true</filtering>
</testResource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
<!-- Hot reloading with JRebel -->
<plugin>
<groupId>org.zeroturnaround</groupId>
@@ -262,26 +300,29 @@
</execution>
</executions>
<configuration>
<!--
addResourcesDirToRebelXml - default is false
Required if the resource directories are to be added to rebel.xml
-->
<addResourcesDirToRebelXml>true</addResourcesDirToRebelXml>
<!-- For more information about how to configure JRebel plugin see:
http://manuals.zeroturnaround.com/jrebel/standalone/maven.html#maven-rebel-xml -->
<classpath>
<fallback>all</fallback>
<resources>
<resource>
<!--
Empty resource element marks default configuration. By
default it is placed first in generated configuration.
-->
</resource>
</resources>
</classpath>
<!-- Always generate the rebel.xml file no matter what timestamps -->
<!--
alwaysGenerate - default is false
If 'false' - rebel.xml is generated if timestamps of pom.xml and the current rebel.xml file are not equal.
If 'true' - rebel.xml will always be generated
-->
<alwaysGenerate>true</alwaysGenerate>
</configuration>
</plugin>
</plugins>
<resources>
<!-- Filter the resource files in all the sub-projects, and do property substitutions -->
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
<!--
@@ -300,6 +341,11 @@
<updatePolicy>daily</updatePolicy>
</snapshots>
</repository>
<!-- Alfresco Enterprise Edition Artifacts, put username/pwd for server in settings.xml -->
<repository>
<id>alfresco-private-repository</id>
<url>https://artifacts.alfresco.com/nexus/content/groups/private</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
@@ -315,5 +361,4 @@
</snapshots>
</pluginRepository>
</pluginRepositories>
</project>

View File

@@ -5,5 +5,5 @@
set MAVEN_OPTS=-Xms256m -Xmx2G
mvn clean install -DskipTests=true alfresco:run
mvn clean install alfresco:run

View File

@@ -1,3 +1,3 @@
#!/bin/bash
MAVEN_OPTS="-Xms256m -Xmx2G" mvn clean install -DskipTests=true alfresco:run
MAVEN_OPTS="-Xms256m -Xmx2G" mvn clean install alfresco:run

View File

@@ -0,0 +1,10 @@
# Enterprise License location
Put the Alfresco Enterprise license file in this directory.
It will then be copied into the Platform WAR in the
WEB-INF/classes/alfresco/extension/license directory.
And then not be part of any other classpaths.

View File

@@ -0,0 +1,72 @@
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# RUN TIME PROPERTIES
# -------------------
########################################################################################################################
# Alfresco configuration for running locally with Enterprise Database, such as SQL Server, Oracle etc
#
# Configuration when running Tomcat embedded from Maven.
# Property values from the POM but it can also be edited here.
########################################################################################################################
dir.root=${alfresco.data.location}
# Alfresco Repo Webapp (alfresco.war) context, ports etc
alfresco.context=alfresco
alfresco.host=localhost
alfresco.port=8080
alfresco.protocol=http
# Alfresco Share Webapp (share.war) context, ports etc
share.context=share
share.host=localhost
share.port=8080
share.protocol=http
index.subsystem.name=solr4
solr.host=localhost
solr.port=8080
solr.secureComms=none
# Don't try and recover any index
index.recovery.mode=NONE
# As we run embedded, we set Lucene
# TODO: Find a better solution for indexing, as buildonly (embedded Lucene) is deprecated and going to be removed soon
#index.subsystem.name=buildonly
# These jobs seem to require Lucene (Unsupported Operation with Solr) so we disable them / set to future date
# See https://forums.alfresco.com/en/viewtopic.php?f=52&t=41597
# If you want to enable them (and so full WQS functionality), please also set index.subsystem.name=lucene
wcmqs.dynamicCollectionProcessor.schedule=0 30 2 * * ? 2060
wcmqs.feedbackProcessor.schedule=0 40 2 * * ? 2060
wcmqs.publishQueueProcessor.schedule=0 50 2 * * ? 2060
# Fail or not when there are node integrity checker errors
integrity.failOnError=true
# Alfresco Repository Enterprise Database Configuration, such as SQL Server, Oracle etc
# The Enterprise Driver is brought in via the tomcat7-maven-plugin as a dependency.
db.driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
db.url=jdbc:sqlserver://localhost:1433;databaseName=alfrescoaio
db.username=alfresco
db.password=alfresco
db.pool.initial=10
db.pool.max=100
# File servers related properties
# For local runs we disable CIFS and FTP
cifs.enabled=false
ftp.enabled=false

View File

@@ -0,0 +1,76 @@
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# RUN TIME PROPERTIES
# -------------------
########################################################################################################################
# Alfresco configuration for running locally with H2 Database
#
# Configuration when running Tomcat embedded from Maven.
# Property values from the POM but it can also be edited here.
########################################################################################################################
dir.root=${alfresco.data.location}
# Alfresco Repo Webapp (alfresco.war) context, ports etc
alfresco.context=alfresco
alfresco.host=localhost
alfresco.port=8080
alfresco.protocol=http
# Alfresco Share Webapp (share.war) context, ports etc
share.context=share
share.host=localhost
share.port=8080
share.protocol=http
index.subsystem.name=solr4
solr.host=localhost
solr.port=8080
solr.secureComms=none
# Don't try and recover any index
index.recovery.mode=NONE
# As we run embedded, we set Lucene
# TODO: Find a better solution for indexing, as buildonly (embedded Lucene) is deprecated and going to be removed soon
#index.subsystem.name=buildonly
# These jobs seem to require Lucene (Unsupported Operation with Solr) so we disable them / set to future date
# See https://forums.alfresco.com/en/viewtopic.php?f=52&t=41597
# If you want to enable them (and so full WQS functionality), please also set index.subsystem.name=lucene
wcmqs.dynamicCollectionProcessor.schedule=0 30 2 * * ? 2060
wcmqs.feedbackProcessor.schedule=0 40 2 * * ? 2060
wcmqs.publishQueueProcessor.schedule=0 50 2 * * ? 2060
# Fail or not when there are node integrity checker errors
integrity.failOnError=true
# Alfresco Repository H2 Database configuration.
# The H2 database implementation and Driver is brought in via the tomcat7-maven-plugin as a dependency.
# The data files for the H2 database will be created in a relative path, such as alf_data_dev/h2_data/alf_dev,
# see alfresco.db.url below.
# For more information about the db parameters see:http://www.h2database.com/html/features.html
db.driver=org.h2.jdbcx.JdbcDataSource
db.url=jdbc:h2:${alfresco.data.location}/h2_data/alf_dev;AUTO_SERVER=TRUE;DB_CLOSE_ON_EXIT=FALSE;LOCK_TIMEOUT=10000;MVCC=FALSE;LOCK_MODE=0
db.username=alfresco
db.password=alfresco
db.pool.initial=10
db.pool.max=100
hibernate.dialect=org.hibernate.dialect.H2Dialect
# File servers related properties
# For local runs we disable CIFS and FTP
cifs.enabled=false
ftp.enabled=false

View File

@@ -0,0 +1,72 @@
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# RUN TIME PROPERTIES
# -------------------
########################################################################################################################
# Alfresco configuration for running locally with MySQL Database
#
# Configuration when running Tomcat embedded from Maven.
# Property values from the POM but it can also be edited here.
########################################################################################################################
dir.root=${alfresco.data.location}
# Alfresco Repo Webapp (alfresco.war) context, ports etc
alfresco.context=alfresco
alfresco.host=localhost
alfresco.port=8080
alfresco.protocol=http
# Alfresco Share Webapp (share.war) context, ports etc
share.context=share
share.host=localhost
share.port=8080
share.protocol=http
index.subsystem.name=solr4
solr.host=localhost
solr.port=8080
solr.secureComms=none
# Don't try and recover any index
index.recovery.mode=NONE
# As we run embedded, we set Lucene
# TODO: Find a better solution for indexing, as buildonly (embedded Lucene) is deprecated and going to be removed soon
#index.subsystem.name=buildonly
# These jobs seem to require Lucene (Unsupported Operation with Solr) so we disable them / set to future date
# See https://forums.alfresco.com/en/viewtopic.php?f=52&t=41597
# If you want to enable them (and so full WQS functionality), please also set index.subsystem.name=lucene
wcmqs.dynamicCollectionProcessor.schedule=0 30 2 * * ? 2060
wcmqs.feedbackProcessor.schedule=0 40 2 * * ? 2060
wcmqs.publishQueueProcessor.schedule=0 50 2 * * ? 2060
# Fail or not when there are node integrity checker errors
integrity.failOnError=true
# Alfresco Repository MySQL Database configuration.
# The MySQL Driver is brought in via the tomcat7-maven-plugin as a dependency.
db.driver=org.gjt.mm.mysql.Driver
db.url=jdbc:mysql://localhost:3306/alfrescoaio?useUnicode=yes&characterEncoding=UTF-8
db.username=alfresco
db.password=alfresco
db.pool.initial=10
db.pool.max=100
# File servers related properties
# For local runs we disable CIFS and FTP
cifs.enabled=false
ftp.enabled=false

View File

@@ -16,10 +16,9 @@
# -------------------
########################################################################################################################
# Alfresco configuration for running locally
# Alfresco configuration for running locally with PostgreSQL Database
#
# Configuration when running Tomcat embedded from Maven.
# This will create the alf_data_dev directory relative to Tomcat run folder.
# Property values from the POM but it can also be edited here.
########################################################################################################################
@@ -58,14 +57,14 @@ wcmqs.publishQueueProcessor.schedule=0 50 2 * * ? 2060
# Fail or not when there are node integrity checker errors
integrity.failOnError=true
# Database connection properties
db.driver=${alfresco.db.datasource.class}
db.url=${alfresco.db.url}
db.username=${alfresco.db.username}
db.password=${alfresco.db.password}
# Alfresco Repository PostgreSQL Database configuration.
# The PostgreSQL Driver is brought in via the tomcat7-maven-plugin as a dependency.
db.driver=org.postgresql.Driver
db.url=jdbc:postgresql://localhost:5432/alfrescoaio
db.username=alfresco
db.password=alfresco
db.pool.initial=10
db.pool.max=100
hibernate.dialect=org.hibernate.dialect.H2Dialect
# File servers related properties
# For local runs we disable CIFS and FTP

View File

@@ -1,3 +1,6 @@
#set( $symbol_pound = '#' )
#set( $symbol_dollar = '$' )
#set( $symbol_escape = '\' )
# Set root logger level to error
log4j.rootLogger=error, Console, File
@@ -261,4 +264,13 @@ log4j.logger.org.alfresco.repo.usage.RepoUsageMonitor=info
# Authorization
log4j.logger.org.alfresco.enterprise.repo.authorization.AuthorizationService=info
log4j.logger.org.alfresco.enterprise.repo.authorization.AuthorizationsConsistencyMonitor=warn
log4j.logger.org.alfresco.enterprise.repo.authorization.AuthorizationsConsistencyMonitor=warn
#-----------------------------------------------------------------------
# Platform module logging
#-----------------------------------------------------------------------
log4j.logger.${package}.platformsample.DemoComponent=debug
log4j.logger.${package}.platformsample.HelloWorldWebScript=debug

View File

@@ -12,7 +12,7 @@
<parent>
<groupId>org.alfresco.maven</groupId>
<artifactId>alfresco-sdk-aggregator</artifactId>
<version>3.0.0-beta-2</version>
<version>3.0.0-beta-4</version>
<relativePath>../../pom.xml</relativePath>
</parent>

View File

@@ -14,7 +14,7 @@
<fileSet filtered="false" packaged="false" encoding="UTF-8">
<directory>src/main/assembly</directory>
<includes>
<include>**/*.xml</include>
<include>**</include>
</includes>
</fileSet>
<fileSet filtered="true" packaged="true" encoding="UTF-8">
@@ -36,14 +36,18 @@
</includes>
<excludes>
<exclude>**/*-context.xml</exclude>
<exclude>**/log4j.properties</exclude>
</excludes>
</fileSet>
<fileSet encoding="UTF-8" filtered="true" packaged="false">
<directory>src/main/resources</directory>
<includes>
<include>**/*-context.xml</include>
<include>**/log4j.properties</include>
</includes>
</fileSet>
<fileSet encoding="UTF-8" filtered="true">
<directory>src/test/resources</directory>
<includes>
<include>**/dev-log4j.properties</include>
</includes>
</fileSet>
<fileSet encoding="UTF-8" filtered="false">
@@ -51,6 +55,9 @@
<includes>
<include>**</include>
</includes>
<excludes>
<exclude>**/dev-log4j.properties</exclude>
</excludes>
</fileSet>
<fileSet encoding="UTF-8" filtered="false">
<directory>src/test/properties</directory>
@@ -58,9 +65,17 @@
<include>**/*.properties</include>
</includes>
</fileSet>
<fileSet encoding="UTF-8" filtered="false">
<directory>src/test/license</directory>
<includes>
<include>**</include>
</includes>
</fileSet>
<fileSet encoding="UTF-8">
<directory></directory>
<includes>
<include>debug.sh</include>
<include>debug.bat</include>
<include>run.sh</include>
<include>run.bat</include>
<include>README.md</include>

View File

@@ -0,0 +1,9 @@
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Dev environment startup script for Alfresco Community ::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
@echo off
set MAVEN_OPTS=-Xms256m -Xmx2G
mvnDebug clean install alfresco:run

View File

@@ -0,0 +1,3 @@
#!/bin/bash
MAVEN_OPTS="-Xms256m -Xmx2G" mvnDebug clean install alfresco:run

View File

@@ -10,6 +10,7 @@
<packaging>jar</packaging>
<properties>
<!-- Alfresco Maven Plugin version to use -->
<alfresco.sdk.version>@@alfresco.sdk.parent.version@@</alfresco.sdk.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -29,35 +30,26 @@
<!-- Properties used in dependency declarations, you don't need to change these -->
<alfresco.groupId>org.alfresco</alfresco.groupId>
<!-- Platform WAR artifact, change to 'alfresco-enterprise' if using Enterprise Edition -->
<alfresco.platform.war.artifactId>alfresco-platform</alfresco.platform.war.artifactId>
<!-- Alfresco Platform webapp version, this is the original Alfresco webapp that will be
customized and then deployed and run by the tomcat maven plugin when
executing for example $ mvn clean install alfresco:run -->
<alfresco.platform.version>5.2.a-EA</alfresco.platform.version>
<alfresco.platform.version>5.2.b-EA</alfresco.platform.version>
<!-- Alfresco Share version, so we can bring in correct alfresco-share-services artifact -->
<alfresco.share.version>5.1.g</alfresco.share.version>
<!-- Alfresco Repo Database configuration.
By default it uses a flat file H2 database to be able to run embedded.
The H2 database implementation is brought in via the tomcat7-maven-plugin as a dependency.
The data files for the H2 database will be created in a relative path, such as alf_data_dev/h2_data/alf_dev,
see alfresco.db.url below.
For more information about the db parameters see:http://www.h2database.com/html/features.html
-->
<alfresco.db.name>alf_dev</alfresco.db.name>
<alfresco.db.username>alfresco</alfresco.db.username>
<alfresco.db.password>alfresco</alfresco.db.password>
<alfresco.db.params>AUTO_SERVER=TRUE;DB_CLOSE_ON_EXIT=FALSE;LOCK_TIMEOUT=10000;MVCC=FALSE;LOCK_MODE=0
</alfresco.db.params>
<alfresco.db.url>jdbc:h2:${alfresco.data.location}/h2_data/${alfresco.db.name};${alfresco.db.params}
</alfresco.db.url>
<alfresco.db.datasource.class>org.h2.jdbcx.JdbcDataSource</alfresco.db.datasource.class>
<alfresco.share.version>5.2.a-EA</alfresco.share.version>
<!-- JRebel Hot reloading of classpath stuff and web resource stuff -->
<jrebel.version>1.1.6</jrebel.version>
<!-- Environment to use, Alfresco Maven Plugin will copy alfresco-global.properties from this directory -->
<!-- Environment to use, Alfresco Maven Plugin will
copy alfresco-global-*.properties files from this directory, such as src/test/properties/local -->
<env>local</env>
<!-- Compile with Java 7, default is 5 -->
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
<!-- This will import the dependencyManagement for all artifacts in the selected Alfresco platform.
@@ -108,11 +100,12 @@
<enableSolr>true</enableSolr>
<!-- We don't need the share.war if we don't have any UI extensions -->
<enableShare>false</enableShare>
<!-- Enable the REST API Explorer -->
<enableApiExplorer>true</enableApiExplorer>
<!--
JARs and AMPs that should be overlayed/applied to the Platform/Repository WAR
(i.e. alfresco.war)
No need to include our self...
-->
<platformModules>
<!-- This AMP is needed if we are going to access the platform webapp from a Share webapp -->
@@ -122,6 +115,14 @@
<version>${alfresco.share.version}</version>
<type>amp</type>
</moduleDependency>
<!-- Bring in this JAR project, need to be included here, otherwise resources from META-INF
will not be loaded, such as the test.html page
-->
<moduleDependency>
<groupId>${project.groupId}</groupId>
<artifactId>${project.artifactId}</artifactId>
<version>${project.version}</version>
</moduleDependency>
</platformModules>
</configuration>
</plugin>
@@ -167,16 +168,63 @@
</execution>
</executions>
<configuration>
<!--
addResourcesDirToRebelXml - default is false
Required if the resource directories are to be added to rebel.xml
-->
<addResourcesDirToRebelXml>true</addResourcesDirToRebelXml>
<!-- For more information about how to configure JRebel plugin see:
http://manuals.zeroturnaround.com/jrebel/standalone/maven.html#maven-rebel-xml -->
<classpath>
<fallback>all</fallback>
<resources>
<resource>
<!--
Empty resource element marks default configuration. By
default it is placed first in generated configuration.
-->
</resource>
</resources>
</classpath>
<!-- Always generate the rebel.xml file no matter what timestamps -->
<!--
alwaysGenerate - default is false
If 'false' - rebel.xml is generated if timestamps of pom.xml and the current rebel.xml file are not equal.
If 'true' - rebel.xml will always be generated
-->
<alwaysGenerate>true</alwaysGenerate>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.1</version>
<configuration>
<encoding>UTF-8</encoding>
<nonFilteredFileExtensions> <!-- jpg, jpeg, gif, bmp and png are added automatically -->
<nonFilteredFileExtension>ftl</nonFilteredFileExtension>
<nonFilteredFileExtension>acp</nonFilteredFileExtension>
<nonFilteredFileExtension>svg</nonFilteredFileExtension>
<nonFilteredFileExtension>pdf</nonFilteredFileExtension>
<nonFilteredFileExtension>doc</nonFilteredFileExtension>
<nonFilteredFileExtension>docx</nonFilteredFileExtension>
<nonFilteredFileExtension>xls</nonFilteredFileExtension>
<nonFilteredFileExtension>xlsx</nonFilteredFileExtension>
<nonFilteredFileExtension>ppt</nonFilteredFileExtension>
<nonFilteredFileExtension>pptx</nonFilteredFileExtension>
<nonFilteredFileExtension>bin</nonFilteredFileExtension>
<nonFilteredFileExtension>lic</nonFilteredFileExtension>
<nonFilteredFileExtension>swf</nonFilteredFileExtension>
<nonFilteredFileExtension>zip</nonFilteredFileExtension>
<nonFilteredFileExtension>msg</nonFilteredFileExtension>
<nonFilteredFileExtension>jar</nonFilteredFileExtension>
<nonFilteredFileExtension>ttf</nonFilteredFileExtension>
<nonFilteredFileExtension>eot</nonFilteredFileExtension>
<nonFilteredFileExtension>woff</nonFilteredFileExtension>
<nonFilteredFileExtension>woff2</nonFilteredFileExtension>
<nonFilteredFileExtension>css</nonFilteredFileExtension>
<nonFilteredFileExtension>ico</nonFilteredFileExtension>
<nonFilteredFileExtension>psd</nonFilteredFileExtension>
<nonFilteredFileExtension>js</nonFilteredFileExtension>
</nonFilteredFileExtensions>
</configuration>
</plugin>
</plugins>
<resources>
@@ -211,6 +259,11 @@
<updatePolicy>daily</updatePolicy>
</snapshots>
</repository>
<!-- Alfresco Enterprise Edition Artifacts, put username/pwd for server in settings.xml -->
<repository>
<id>alfresco-private-repository</id>
<url>https://artifacts.alfresco.com/nexus/content/groups/private</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>

View File

@@ -5,4 +5,4 @@
set MAVEN_OPTS=-Xms256m -Xmx2G
mvn clean install -DskipTests=true alfresco:run
mvn clean install alfresco:run

View File

@@ -1,3 +1,3 @@
#!/bin/bash
MAVEN_OPTS="-Xms256m -Xmx2G" mvn clean install -DskipTests=true alfresco:run
MAVEN_OPTS="-Xms256m -Xmx2G" mvn clean install alfresco:run

View File

@@ -12,12 +12,39 @@
<includeBaseDirectory>false</includeBaseDirectory>
<files>
<!-- Filter module.properties and put at top level in the AMP -->
<file>
<source>src/main/resources/alfresco/module/${project.artifactId}/module.properties</source>
<filtered>true</filtered>
</file>
<!-- Include AMP -> WAR mapping file (needed for custom mappings) -->
<file>
<source>src/main/assembly/file-mapping.properties</source>
<filtered>false</filtered>
</file>
</files>
<fileSets>
<!-- Anything in the assembly/lib directory will end up in the /lib directory in the AMP -->
<fileSet>
<directory>src/main/assembly/lib</directory>
<outputDirectory>lib</outputDirectory>
<excludes>
<exclude>README.md</exclude>
</excludes>
</fileSet>
<!-- Anything in the assembly/web directory will end up in the /web directory in the AMP -->
<fileSet>
<directory>src/main/assembly/web</directory>
<outputDirectory>web</outputDirectory>
<filtered>true</filtered> <!-- Will filter files and substitute POM props such as for example ${project.name} -->
<excludes>
<exclude>README.md</exclude>
</excludes>
</fileSet>
</fileSets>
<!-- Include the project artifact (JAR) in the /lib directory in the AMP -->
<dependencySets>
<dependencySet>
<outputDirectory>lib</outputDirectory>

View File

@@ -0,0 +1,27 @@
# Custom AMP to WAR location mappings
#
# The following property can be used to include the standard set of mappings.
# The contents of this file will override any defaults. The default is
# 'true', i.e. the default mappings will be augmented or modified by values in
# this file.
#
# Default mappings are:
#
# /config=/WEB-INF/classes
# /lib=/WEB-INF/lib
# /licenses=/WEB-INF/licenses
# /web/jsp=/jsp
# /web/css=/css
# /web/images=/images
# /web/scripts=/scripts
# /web/php=/php
#
include.default=true
#
# Custom mappings. If 'include.default' is false, then this is the complete set.
# Map /web to / in AMP so we can override things like favicon.ico
#
/web=/

View File

@@ -0,0 +1,21 @@
# 3rd party libraries (JARs) that should be included in WAR
Put here any 3rd party libraries (JARs) that are needed by customizations,
but that are not part of the out-of-the-box libraries in the *alfresco/WEB-INF/lib*
directory.
**Note**. Module dependency needs to be set to amp for the libs to be applied by MMT:
`
<moduleDependency>
<groupId>${project.groupId}</groupId>
<artifactId>some-platform-jar</artifactId>
<version>${project.version}</version>
<type>amp</type>
</moduleDependency>
`
**Important**. If you need to use a library that is available out-of-the-box, then
include it as a *provided* dependency in the module.

View File

@@ -0,0 +1,22 @@
# Web resources that should override out-of-the-box files
Put here any web resources that should override out-of-the-box
web resources, such as favicon.ico. They will then end up in the
*/web* directory in the AMP, and applied to the WAR, and override
any existing web resources in the Alfresco.WAR.
**Note**. Module dependency needs to be set to amp for the web resources to be applied by MMT:
`
<moduleDependency>
<groupId>${project.groupId}</groupId>
<artifactId>some-platform-jar</artifactId>
<version>${project.version}</version>
<type>amp</type>
</moduleDependency>
`
**Important**. New web resources should not be located here, but instead
in the usual place in the *src/main/resources/META-INF/resources* directory.

View File

@@ -35,7 +35,7 @@ import org.apache.commons.logging.LogFactory;
* @author Maurizio Pillitu
*/
public class DemoComponent extends AbstractModuleComponent {
Log log = LogFactory.getLog(DemoComponent.class);
private static Log logger = LogFactory.getLog(DemoComponent.class);
private NodeService nodeService;
@@ -55,8 +55,8 @@ public class DemoComponent extends AbstractModuleComponent {
@Override
protected void executeInternal() throws Throwable {
System.out.println("DemoComponent has been executed");
log.debug("Test debug logging. Congratulation your JAR Module is working");
log.info("This is only for information purposed. Better remove me from the log in Production");
logger.debug("Test debug logging. Congratulation your JAR Module is working");
logger.info("This is only for information purposed. Better remove me from the log in Production");
}
/**

View File

@@ -23,6 +23,8 @@ import org.springframework.extensions.webscripts.Cache;
import org.springframework.extensions.webscripts.DeclarativeWebScript;
import org.springframework.extensions.webscripts.Status;
import org.springframework.extensions.webscripts.WebScriptRequest;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import java.util.HashMap;
import java.util.Map;
@@ -34,10 +36,15 @@ import java.util.Map;
* @since 2.1.0
*/
public class HelloWorldWebScript extends DeclarativeWebScript {
private static Log logger = LogFactory.getLog(HelloWorldWebScript.class);
protected Map<String, Object> executeImpl(
WebScriptRequest req, Status status, Cache cache) {
Map<String, Object> model = new HashMap<String, Object>();
model.put("fromJava", "HelloFromJava");
logger.debug("Your 'Hello World' Web Script was called!");
return model;
}
}

View File

@@ -18,6 +18,12 @@
<value>alfresco/module/${project.artifactId}/model/workflow-model.xml</value>
</list>
</property>
<property name="labels">
<list>
<!-- Bootstrap Resource Bundles for the content model types, aspects, properties etc -->
<value>alfresco/module/${project.artifactId}/messages/content-model</value>
</list>
</property>
</bean>
<bean id="${package}.sampleprocess.workflowBootstrap" parent="workflowDeployer">

View File

@@ -25,15 +25,15 @@
<bean id="${package}.exampleBean" class="${package}.platformsample.Demo" init-method="init" />
<!-- A simple module component that will be executed once.
Note. this module component will only be executed once, and then there will be an entry for it in the Repo.
So doing for example $ mvn clean install -Prun twice will only execute this component the first time.
Note. this module component will only be executed once, and then there will be an entry for it in the Repo DB.
So doing for example $ mvn clean install alfresco:run twice will only execute this component the first time.
You need to remove /alf_data_dev for it to be executed again. -->
<bean id="${package}.exampleComponent" class="${package}.platformsample.DemoComponent" parent="module.baseComponent" >
<property name="moduleId" value="${artifactId}" /> <!-- See module.properties -->
<property name="name" value="exampleComponent" />
<property name="description" value="A demonstration component" />
<property name="sinceVersion" value="1.0" />
<property name="appliesFromVersion" value="1.0" />
<property name="appliesFromVersion" value="0.99" /> <!-- 1.0 would not work here when using SNAPSHOT version in project -->
<property name="nodeService" ref="NodeService" />
<property name="nodeLocatorService" ref="nodeLocatorService" />
</bean>

View File

@@ -1,43 +0,0 @@
#set( $symbol_pound = '#' )
#set( $symbol_dollar = '$' )
#set( $symbol_escape = '\' )
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#-----------------------------------------------------------------------
# ${artifactId} module log4j.properties
#
# NOTE
# ----
# Log4j uses the following logging levels:
# debug,info,warn,error,fatal
#
# To set the logging level of {fullClassName} to {loglevel},
# add a line to this file of the following form:
#
# log4j.logger.{fullClassName}={loglevel}
#
# For example, to make 'com.example.MyExample' produce 'debug'
# logs, add a line like this:
#
# log4j.logger.com.example.MyExample=debug
#
#
# WARNING
# -------
# Log properties in this log4j.properties file override/augment
# those in the webapp's main log4j.properties.
#
#-----------------------------------------------------------------------
log4j.logger.${package}.platformsample.DemoComponent=debug

View File

@@ -0,0 +1,6 @@
# This file should contain content model labels
acme_contentModel.type.acme_document.title=ACME Document
acme_contentModel.aspect.acme_securityClassified.title=ACME Security Classified
acme_contentModel.property.acme_documentId.title=Document Id
acme_contentModel.property.acme_securityClassification.title=Security Classification

View File

@@ -0,0 +1,10 @@
# Enterprise License location
Put the Alfresco Enterprise license file in this directory.
It will then be copied into the Platform WAR in the
WEB-INF/classes/alfresco/extension/license directory.
And then not be part of any other classpaths.

View File

@@ -0,0 +1,72 @@
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# RUN TIME PROPERTIES
# -------------------
########################################################################################################################
# Alfresco configuration for running locally with Enterprise Database, such as SQL Server, Oracle etc
#
# Configuration when running Tomcat embedded from Maven.
# Property values from the POM but it can also be edited here.
########################################################################################################################
dir.root=${alfresco.data.location}
# Alfresco Repo Webapp (alfresco.war) context, ports etc
alfresco.context=alfresco
alfresco.host=localhost
alfresco.port=8080
alfresco.protocol=http
# Alfresco Share Webapp (share.war) context, ports etc
share.context=share
share.host=localhost
share.port=8080
share.protocol=http
index.subsystem.name=solr4
solr.host=localhost
solr.port=8080
solr.secureComms=none
# Don't try and recover any index
index.recovery.mode=NONE
# As we run embedded, we set Lucene
# TODO: Find a better solution for indexing, as buildonly (embedded Lucene) is deprecated and going to be removed soon
#index.subsystem.name=buildonly
# These jobs seem to require Lucene (Unsupported Operation with Solr) so we disable them / set to future date
# See https://forums.alfresco.com/en/viewtopic.php?f=52&t=41597
# If you want to enable them (and so full WQS functionality), please also set index.subsystem.name=lucene
wcmqs.dynamicCollectionProcessor.schedule=0 30 2 * * ? 2060
wcmqs.feedbackProcessor.schedule=0 40 2 * * ? 2060
wcmqs.publishQueueProcessor.schedule=0 50 2 * * ? 2060
# Fail or not when there are node integrity checker errors
integrity.failOnError=true
# Alfresco Repository Enterprise Database Configuration, such as SQL Server, Oracle etc
# The Enterprise Driver is brought in via the tomcat7-maven-plugin as a dependency.
db.driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
db.url=jdbc:sqlserver://localhost:1433;databaseName=alfrescoaio
db.username=alfresco
db.password=alfresco
db.pool.initial=10
db.pool.max=100
# File servers related properties
# For local runs we disable CIFS and FTP
cifs.enabled=false
ftp.enabled=false

View File

@@ -0,0 +1,76 @@
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# RUN TIME PROPERTIES
# -------------------
########################################################################################################################
# Alfresco configuration for running locally with H2 Database
#
# Configuration when running Tomcat embedded from Maven.
# Property values from the POM but it can also be edited here.
########################################################################################################################
dir.root=${alfresco.data.location}
# Alfresco Repo Webapp (alfresco.war) context, ports etc
alfresco.context=alfresco
alfresco.host=localhost
alfresco.port=8080
alfresco.protocol=http
# Alfresco Share Webapp (share.war) context, ports etc
share.context=share
share.host=localhost
share.port=8080
share.protocol=http
index.subsystem.name=solr4
solr.host=localhost
solr.port=8080
solr.secureComms=none
# Don't try and recover any index
index.recovery.mode=NONE
# As we run embedded, we set Lucene
# TODO: Find a better solution for indexing, as buildonly (embedded Lucene) is deprecated and going to be removed soon
#index.subsystem.name=buildonly
# These jobs seem to require Lucene (Unsupported Operation with Solr) so we disable them / set to future date
# See https://forums.alfresco.com/en/viewtopic.php?f=52&t=41597
# If you want to enable them (and so full WQS functionality), please also set index.subsystem.name=lucene
wcmqs.dynamicCollectionProcessor.schedule=0 30 2 * * ? 2060
wcmqs.feedbackProcessor.schedule=0 40 2 * * ? 2060
wcmqs.publishQueueProcessor.schedule=0 50 2 * * ? 2060
# Fail or not when there are node integrity checker errors
integrity.failOnError=true
# Alfresco Repository H2 Database configuration.
# The H2 database implementation and Driver is brought in via the tomcat7-maven-plugin as a dependency.
# The data files for the H2 database will be created in a relative path, such as alf_data_dev/h2_data/alf_dev,
# see alfresco.db.url below.
# For more information about the db parameters see:http://www.h2database.com/html/features.html
db.driver=org.h2.jdbcx.JdbcDataSource
db.url=jdbc:h2:${alfresco.data.location}/h2_data/alf_dev;AUTO_SERVER=TRUE;DB_CLOSE_ON_EXIT=FALSE;LOCK_TIMEOUT=10000;MVCC=FALSE;LOCK_MODE=0
db.username=alfresco
db.password=alfresco
db.pool.initial=10
db.pool.max=100
hibernate.dialect=org.hibernate.dialect.H2Dialect
# File servers related properties
# For local runs we disable CIFS and FTP
cifs.enabled=false
ftp.enabled=false

View File

@@ -0,0 +1,72 @@
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# RUN TIME PROPERTIES
# -------------------
########################################################################################################################
# Alfresco configuration for running locally with MySQL Database
#
# Configuration when running Tomcat embedded from Maven.
# Property values from the POM but it can also be edited here.
########################################################################################################################
dir.root=${alfresco.data.location}
# Alfresco Repo Webapp (alfresco.war) context, ports etc
alfresco.context=alfresco
alfresco.host=localhost
alfresco.port=8080
alfresco.protocol=http
# Alfresco Share Webapp (share.war) context, ports etc
share.context=share
share.host=localhost
share.port=8080
share.protocol=http
index.subsystem.name=solr4
solr.host=localhost
solr.port=8080
solr.secureComms=none
# Don't try and recover any index
index.recovery.mode=NONE
# As we run embedded, we set Lucene
# TODO: Find a better solution for indexing, as buildonly (embedded Lucene) is deprecated and going to be removed soon
#index.subsystem.name=buildonly
# These jobs seem to require Lucene (Unsupported Operation with Solr) so we disable them / set to future date
# See https://forums.alfresco.com/en/viewtopic.php?f=52&t=41597
# If you want to enable them (and so full WQS functionality), please also set index.subsystem.name=lucene
wcmqs.dynamicCollectionProcessor.schedule=0 30 2 * * ? 2060
wcmqs.feedbackProcessor.schedule=0 40 2 * * ? 2060
wcmqs.publishQueueProcessor.schedule=0 50 2 * * ? 2060
# Fail or not when there are node integrity checker errors
integrity.failOnError=true
# Alfresco Repository MySQL Database configuration.
# The MySQL Driver is brought in via the tomcat7-maven-plugin as a dependency.
db.driver=org.gjt.mm.mysql.Driver
db.url=jdbc:mysql://localhost:3306/alfrescoaio?useUnicode=yes&characterEncoding=UTF-8
db.username=alfresco
db.password=alfresco
db.pool.initial=10
db.pool.max=100
# File servers related properties
# For local runs we disable CIFS and FTP
cifs.enabled=false
ftp.enabled=false

View File

@@ -16,10 +16,9 @@
# -------------------
########################################################################################################################
# Alfresco configuration for running locally
# Alfresco configuration for running locally with PostgreSQL Database
#
# Configuration when running Tomcat embedded from Maven.
# This will create the alf_data_dev directory relative to Tomcat run folder.
# Property values from the POM but it can also be edited here.
########################################################################################################################
@@ -44,6 +43,9 @@ solr.secureComms=none
# Don't try and recover any index
index.recovery.mode=NONE
# As we run embedded, we set Lucene
# TODO: Find a better solution for indexing, as buildonly (embedded Lucene) is deprecated and going to be removed soon
#index.subsystem.name=buildonly
# These jobs seem to require Lucene (Unsupported Operation with Solr) so we disable them / set to future date
# See https://forums.alfresco.com/en/viewtopic.php?f=52&t=41597
@@ -55,14 +57,14 @@ wcmqs.publishQueueProcessor.schedule=0 50 2 * * ? 2060
# Fail or not when there are node integrity checker errors
integrity.failOnError=true
# Database connection properties
db.driver=${alfresco.db.datasource.class}
db.url=${alfresco.db.url}
db.username=${alfresco.db.username}
db.password=${alfresco.db.password}
# Alfresco Repository PostgreSQL Database configuration.
# The PostgreSQL Driver is brought in via the tomcat7-maven-plugin as a dependency.
db.driver=org.postgresql.Driver
db.url=jdbc:postgresql://localhost:5432/alfrescoaio
db.username=alfresco
db.password=alfresco
db.pool.initial=10
db.pool.max=100
hibernate.dialect=org.hibernate.dialect.H2Dialect
# File servers related properties
# For local runs we disable CIFS and FTP

View File

@@ -1,3 +1,6 @@
#set( $symbol_pound = '#' )
#set( $symbol_dollar = '$' )
#set( $symbol_escape = '\' )
# Set root logger level to error
log4j.rootLogger=error, Console, File
@@ -261,4 +264,10 @@ log4j.logger.org.alfresco.repo.usage.RepoUsageMonitor=info
# Authorization
log4j.logger.org.alfresco.enterprise.repo.authorization.AuthorizationService=info
log4j.logger.org.alfresco.enterprise.repo.authorization.AuthorizationsConsistencyMonitor=warn
log4j.logger.org.alfresco.enterprise.repo.authorization.AuthorizationsConsistencyMonitor=warn
#-----------------------------------------------------------------------
# Platform module logging
#-----------------------------------------------------------------------
log4j.logger.${package}.platformsample.DemoComponent=debug
log4j.logger.${package}.platformsample.HelloWorldWebScript=debug

View File

@@ -14,7 +14,7 @@
<parent>
<groupId>org.alfresco.maven</groupId>
<artifactId>alfresco-sdk-aggregator</artifactId>
<version>3.0.0-beta-2</version>
<version>3.0.0-beta-4</version>
<relativePath>../../pom.xml</relativePath>
</parent>

View File

@@ -14,7 +14,7 @@
<fileSet filtered="false" packaged="false" encoding="UTF-8">
<directory>src/main/assembly</directory>
<includes>
<include>**/*.xml</include>
<include>**</include>
</includes>
</fileSet>
<fileSet filtered="true" packaged="true" encoding="UTF-8">
@@ -61,6 +61,8 @@
<fileSet encoding="UTF-8">
<directory></directory>
<includes>
<include>debug.sh</include>
<include>debug.bat</include>
<include>run.sh</include>
<include>run.bat</include>
<include>README.md</include>

View File

@@ -0,0 +1,10 @@
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Dev environment startup script for Alfresco Community. ::
:: ::
:: Note. requires Alfresco.war to be running in another ::
:: Tomcat on port 8080. ::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
@echo off
mvnDebug clean install alfresco:run

View File

@@ -0,0 +1,4 @@
#!/bin/bash
# Note. requires Alfresco.war to be running in another Tomcat on port 8080
mvnDebug clean install alfresco:run

View File

@@ -10,7 +10,8 @@
<packaging>jar</packaging>
<properties>
<alfresco.sdk.version>@@alfresco.sdk.parent.version@@</alfresco.sdk.version>
<!-- Alfresco Maven Plugin version to use -->
<alfresco.sdk.version>@@alfresco.sdk.parent.version@@</alfresco.sdk.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -21,14 +22,14 @@
<!-- Alfresco Share webapp version, this is the original Alfresco webapp that will be
customized and then deployed and run by the tomcat maven plugin when
executing for example $ mvn clean install alfresco:run -->
<alfresco.share.version>5.1.g</alfresco.share.version>
<alfresco.share.version>5.2.a-EA</alfresco.share.version>
<!-- Alfresco Surf version, if you change Share version you might need to change Surf version -->
<alfresco.surf.version>6.5</alfresco.surf.version>
<alfresco.surf.version>6.6</alfresco.surf.version>
<!-- Aikau framework version, it is released separately, so it can be useful to be able
to bring in newer versions with bug fixes etc -->
<aikau.version>1.0.82</aikau.version>
<aikau.version>1.0.85</aikau.version>
<!-- Since alfresco.war (i.e. the Platform/Repository) is already running on port 8080, we run Share.WAR on port 8081.
If Alfresco Platform is not running, then generate a platform-jar-module and start it up. -->
@@ -36,6 +37,10 @@
<!-- JRebel Hot reloading of classpath stuff and web resource stuff -->
<jrebel.version>1.1.6</jrebel.version>
<!-- Compile with Java 7, default is 5 -->
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
<dependencies>
@@ -81,16 +86,22 @@
<!--
JARs and AMPs that should be overlayed/applied to the Share WAR
(i.e. share.war)
No need to include our self...
-->
<shareModules>
<moduleDependency>
<!-- Bring in a newer version, can coexist with older versions in the WAR disttribution,
newest version is picked. -->
<!-- Bring in a newer version of Aikau, can coexist with older versions in the
WAR distribution, newest version is picked. -->
<groupId>${alfresco.groupId}</groupId>
<artifactId>aikau</artifactId>
<version>${aikau.version}</version>
</moduleDependency>
<!-- Bring in this JAR project, need to be included here, otherwise share-config-custom.xml
will not be picked up. It will not be read from target/classes/META-INF -->
<moduleDependency>
<groupId>${project.groupId}</groupId>
<artifactId>${project.artifactId}</artifactId>
<version>${project.version}</version>
</moduleDependency>
</shareModules>
</configuration>
</plugin>
@@ -136,16 +147,63 @@
</execution>
</executions>
<configuration>
<!--
addResourcesDirToRebelXml - default is false
Required if the resource directories are to be added to rebel.xml
-->
<addResourcesDirToRebelXml>true</addResourcesDirToRebelXml>
<!-- For more information about how to configure JRebel plugin see:
http://manuals.zeroturnaround.com/jrebel/standalone/maven.html#maven-rebel-xml -->
<classpath>
<fallback>all</fallback>
<resources>
<resource>
<!--
Empty resource element marks default configuration. By
default it is placed first in generated configuration.
-->
</resource>
</resources>
</classpath>
<!-- Always generate the rebel.xml file no matter what timestamps -->
<!--
alwaysGenerate - default is false
If 'false' - rebel.xml is generated if timestamps of pom.xml and the current rebel.xml file are not equal.
If 'true' - rebel.xml will always be generated
-->
<alwaysGenerate>true</alwaysGenerate>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.1</version>
<configuration>
<encoding>UTF-8</encoding>
<nonFilteredFileExtensions> <!-- jpg, jpeg, gif, bmp and png are added automatically -->
<nonFilteredFileExtension>ftl</nonFilteredFileExtension>
<nonFilteredFileExtension>acp</nonFilteredFileExtension>
<nonFilteredFileExtension>svg</nonFilteredFileExtension>
<nonFilteredFileExtension>pdf</nonFilteredFileExtension>
<nonFilteredFileExtension>doc</nonFilteredFileExtension>
<nonFilteredFileExtension>docx</nonFilteredFileExtension>
<nonFilteredFileExtension>xls</nonFilteredFileExtension>
<nonFilteredFileExtension>xlsx</nonFilteredFileExtension>
<nonFilteredFileExtension>ppt</nonFilteredFileExtension>
<nonFilteredFileExtension>pptx</nonFilteredFileExtension>
<nonFilteredFileExtension>bin</nonFilteredFileExtension>
<nonFilteredFileExtension>lic</nonFilteredFileExtension>
<nonFilteredFileExtension>swf</nonFilteredFileExtension>
<nonFilteredFileExtension>zip</nonFilteredFileExtension>
<nonFilteredFileExtension>msg</nonFilteredFileExtension>
<nonFilteredFileExtension>jar</nonFilteredFileExtension>
<nonFilteredFileExtension>ttf</nonFilteredFileExtension>
<nonFilteredFileExtension>eot</nonFilteredFileExtension>
<nonFilteredFileExtension>woff</nonFilteredFileExtension>
<nonFilteredFileExtension>woff2</nonFilteredFileExtension>
<nonFilteredFileExtension>css</nonFilteredFileExtension>
<nonFilteredFileExtension>ico</nonFilteredFileExtension>
<nonFilteredFileExtension>psd</nonFilteredFileExtension>
<nonFilteredFileExtension>js</nonFilteredFileExtension>
</nonFilteredFileExtensions>
</configuration>
</plugin>
</plugins>
<resources>
@@ -180,6 +238,11 @@
<updatePolicy>daily</updatePolicy>
</snapshots>
</repository>
<!-- Alfresco Enterprise Edition Artifacts, put username/pwd for server in settings.xml -->
<repository>
<id>alfresco-private-repository</id>
<url>https://artifacts.alfresco.com/nexus/content/groups/private</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>

View File

@@ -6,4 +6,4 @@
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
@echo off
mvn clean install -DskipTests=true alfresco:run
mvn clean install alfresco:run

View File

@@ -1,4 +1,4 @@
#!/bin/bash
# Note. requires Alfresco.war to be running in another Tomcat on port 8080
mvn clean install -DskipTests=true alfresco:run
mvn clean install alfresco:run

View File

@@ -10,13 +10,41 @@
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<files>
<!-- Filter module.properties and put at top level in the AMP -->
<file>
<source>${project.basedir}/src/main/resources/alfresco/module/${project.artifactId}/module.properties</source>
<source>src/main/resources/alfresco/module/${project.artifactId}/module.properties</source>
<filtered>true</filtered>
</file>
<!-- Include AMP -> WAR mapping file (needed for custom mappings) -->
<file>
<source>src/main/assembly/file-mapping.properties</source>
<filtered>false</filtered>
</file>
</files>
<fileSets>
<!-- Anything in the assembly/lib directory will end up in the /lib directory in the AMP -->
<fileSet>
<directory>src/main/assembly/lib</directory>
<outputDirectory>lib</outputDirectory>
<excludes>
<exclude>README.md</exclude>
</excludes>
</fileSet>
<!-- Anything in the assembly/web directory will end up in the /web directory in the AMP -->
<fileSet>
<directory>src/main/assembly/web</directory>
<outputDirectory>web</outputDirectory>
<filtered>true</filtered> <!-- Will filter files and substitute POM props such as for example ${project.name} -->
<excludes>
<exclude>README.md</exclude>
</excludes>
</fileSet>
</fileSets>
<!-- Include the project artifact (JAR) in the /lib directory in the AMP -->
<dependencySets>
<dependencySet>
<outputDirectory>lib</outputDirectory>

View File

@@ -0,0 +1,27 @@
# Custom AMP to WAR location mappings
#
# The following property can be used to include the standard set of mappings.
# The contents of this file will override any defaults. The default is
# 'true', i.e. the default mappings will be augmented or modified by values in
# this file.
#
# Default mappings are:
#
# /config=/WEB-INF/classes
# /lib=/WEB-INF/lib
# /licenses=/WEB-INF/licenses
# /web/jsp=/jsp
# /web/css=/css
# /web/images=/images
# /web/scripts=/scripts
# /web/php=/php
#
include.default=true
#
# Custom mappings. If 'include.default' is false, then this is the complete set.
# Map /web to / in AMP so we can override things like favicon.ico
#
/web=/

View File

@@ -0,0 +1,19 @@
# 3rd party libraries (JARs) that should be included in WAR
Put here any 3rd party libraries (JARs) that are needed by customizations,
but that are not part of the out-of-the-box libraries in the *share/WEB-INF/lib*
directory.
**Note**. Module dependency needs to be set to amp for the libs to be applied by MMT:
`
<moduleDependency>
<groupId>${project.groupId}</groupId>
<artifactId>some-share-jar</artifactId>
<version>${project.version}</version>
<type>amp</type>
</moduleDependency>
`
**Important**. If you need to use a library that is available out-of-the-box, then
include it as a *provided* dependency in the module.

View File

@@ -0,0 +1,22 @@
# Web resources that should override out-of-the-box files
Put here any web resources that should override out-of-the-box
web resources, such as favicon.ico. They will then end up in the
*/web* directory in the AMP, and applied to the WAR, and override
any existing web resources in the Share.WAR.
**Note**. Module dependency needs to be set to amp for the web resources to be applied by MMT:
`
<moduleDependency>
<groupId>${project.groupId}</groupId>
<artifactId>some-share-jar</artifactId>
<version>${project.version}</version>
<type>amp</type>
</moduleDependency>
`
**Important**. New web resources should not be located here, but instead
in the usual place in the *src/main/resources/META-INF/resources/<module-id>/* directory.

View File

@@ -0,0 +1,420 @@
<!-- Share configuration related to this particular Share module extension, such as:
- Doclib action config
- Form config
- Aspect and Type config
- Advanced Search
Note. Any configuration related to the whole Share.war webapp
(i.e. not specific to this share extension) should be
placed in the environment specific config file:
alfresco/tomcat/shared/classes/alfresco/web-extension/share-config-custom.xml
-->
<alfresco-config>
<!--================================================================================================================
Make custom types and aspects visible in "Change Type" and "Manage Aspects" actions.
This will also make them visible when creating rules.
(will be merged with out-of-the-box configured types and aspects)
=============================================================================================================-->
<config evaluator="string-compare" condition="DocumentLibrary">
<aspects>
<visible>
<aspect name="acme:securityClassified"/>
</visible>
<addable> <!-- defaults to visible config -->
</addable>
<removeable> <!-- defaults to visible config -->
</removeable>
</aspects>
<types>
<!-- Define the ACME base doc type as decedent from cm:content -->
<type name="cm:content">
<subtype name="acme:document"/>
</type>
</types>
</config>
<!--================================================================================================================
Advanced Search Forms for types
(search forms for aspects are not available)
=============================================================================================================-->
<config evaluator="string-compare" condition="AdvancedSearch" replace="true">
<advanced-search>
<forms>
<!-- Standard out-of-the-box types -->
<form labelId="search.form.label.cm_content" descriptionId="search.form.desc.cm_content">cm:content
</form>
<form labelId="search.form.label.cm_folder" descriptionId="search.form.desc.cm_folder">cm:folder</form>
<!-- Custom type -->
<form labelId="form.label.advancedsearch.acmeDocument"
descriptionId="form.description.advancedsearch.acmeDocument">acme:document
</form>
</forms>
</advanced-search>
</config>
<!--================================================================================================================
View, Edit, Create, and Search forms for custom types
The following form configurations for the custom types
have not been created from scratch. We have instead copied
out-of-the-box form configurations for cm:content and cm:folder
from the tomcat/webapps/share/WEB-INF/classes/alfresco/share-form-config.xml file
in a standard Alfresco installation (with the version matching)
and used them as a starting point.
=============================================================================================================-->
<!-- __________________________________ acme:document base type _________________________________________________-->
<!-- View and Edit forms for acme:document -->
<config evaluator="node-type" condition="acme:document">
<forms>
<!-- Default form configuration for the cm:content type -->
<form>
<field-visibility>
<show id="cm:name"/>
<show id="cm:title" force="true"/>
<show id="cm:description" force="true"/>
<show id="mimetype"/>
<show id="cm:author" force="true"/>
<show id="size" for-mode="view"/>
<show id="cm:creator" for-mode="view"/>
<show id="cm:created" for-mode="view"/>
<show id="cm:modifier" for-mode="view"/>
<show id="cm:modified" for-mode="view"/>
<!-- tags and categories -->
<show id="cm:taggable" for-mode="edit" force="true"/>
<show id="cm:categories"/>
<!-- cm:dublincore aspect -->
<show id="cm:publisher"/>
<show id="cm:contributor"/>
<show id="cm:type"/>
<show id="cm:identifier"/>
<show id="cm:dcsource"/>
<show id="cm:coverage"/>
<show id="cm:rights"/>
<show id="cm:subject"/>
<!-- cm:complianceable aspect -->
<show id="cm:removeAfter"/>
<!-- cm:effectivity aspect -->
<show id="cm:from"/>
<show id="cm:to"/>
<!-- cm:summarizable aspect -->
<show id="cm:summary"/>
<!-- cm:translatable aspect -->
<show id="cm:translations"/>
<!-- cm:localizable aspect -->
<show id="cm:locale"/>
<!-- cm:ownable aspect -->
<show id="cm:owner"/>
<!-- cm:attachable aspect -->
<show id="cm:attachments"/>
<!-- cm:emailed aspect -->
<show id="cm:originator"/>
<show id="cm:addressee"/>
<show id="cm:addressees"/>
<show id="cm:sentdate"/>
<show id="cm:subjectline"/>
<!-- exif:exif aspect -->
<show id="exif:dateTimeOriginal"/>
<show id="exif:pixelXDimension"/>
<show id="exif:pixelYDimension"/>
<show id="exif:exposureTime"/>
<show id="exif:fNumber"/>
<show id="exif:flash"/>
<show id="exif:focalLength"/>
<show id="exif:isoSpeedRatings"/>
<show id="exif:manufacturer"/>
<show id="exif:model"/>
<show id="exif:software"/>
<show id="exif:orientation"/>
<show id="exif:xResolution"/>
<show id="exif:yResolution"/>
<show id="exif:resolutionUnit"/>
<!-- audio:audio aspect -->
<show id="audio:album"/>
<show id="audio:artist"/>
<show id="audio:composer"/>
<show id="audio:engineer"/>
<show id="audio:genre"/>
<show id="audio:trackNumber"/>
<show id="audio:releaseDate"/>
<show id="audio:sampleRate"/>
<show id="audio:sampleType"/>
<show id="audio:channelType"/>
<show id="audio:compressor"/>
<!-- cm:indexControl aspect -->
<show id="cm:isIndexed"/>
<show id="cm:isContentIndexed"/>
<!-- cm:geographic aspect -->
<show id="cm:latitude"/>
<show id="cm:longitude"/>
<!-- surf:widget aspect -->
<show id="surf:widgetType"/>
<show id="surf:mid"/>
<show id="surf:label"/>
<!-- ACME custom props -->
<show id="acme:documentId" force="true"/>
<show id="acme:securityClassification"/>
</field-visibility>
<appearance>
<field id="cm:name">
<control>
<control-param name="maxLength">255</control-param>
</control>
</field>
<field id="cm:title">
<control template="/org/alfresco/components/form/controls/textfield.ftl"/>
</field>
<field id="cm:description">
<control>
<control-param name="activateLinks">true</control-param>
</control>
</field>
<set id="cm:content2cols" template="/org/alfresco/components/form/2-column-set.ftl"/>
<field set="cm:content2cols" id="mimetype">
<control template="/org/alfresco/components/form/controls/mimetype.ftl"/>
</field>
<field set="cm:content2cols" id="size">
<control template="/org/alfresco/components/form/controls/size.ftl"/>
</field>
<field set="cm:content2cols" id="cm:creator"/>
<field set="cm:content2cols" id="cm:created"/>
<field set="cm:content2cols" id="cm:modifier"/>
<field set="cm:content2cols" id="cm:modified"/>
<field id="cm:taggable">
<control>
<control-param name="compactMode">true</control-param>
<control-param name="params">aspect=cm:taggable</control-param>
<control-param name="createNewItemUri">/api/tag/workspace/SpacesStore</control-param>
<control-param name="createNewItemIcon">tag</control-param>
</control>
</field>
<field id="cm:categories">
<control>
<control-param name="compactMode">true</control-param>
</control>
</field>
<field id="cm:originator" read-only="true"/>
<field id="cm:addressee" read-only="true"/>
<field id="cm:addressees" read-only="true"/>
<field id="cm:sentdate" read-only="true"/>
<field id="cm:subjectline" read-only="true"/>
<!-- ACME Props appearance -->
<set id="acmeDocSet" appearance="bordered-panel" label-id="form.set.label.acme.document"/>
<field id="acme:documentId" label-id="form.field.label.acme.documentId" set="acmeDocSet">
<control template="/org/alfresco/components/form/controls/textfield.ftl"/>
</field>
<field id="acme:securityClassification" label-id="form.field.label.acme.securityClassification"
set="acmeDocSet"/>
</appearance>
</form>
<!-- Document Library pop-up Edit Metadata form -->
<form id="doclib-simple-metadata">
<field-visibility>
<show id="cm:name"/>
<show id="cm:title" force="true"/>
<show id="cm:description" force="true"/>
<!-- tags and categories -->
<show id="cm:taggable" for-mode="edit" force="true"/>
<show id="cm:categories"/>
<!-- ACME custom props -->
<show id="acme:documentId" force="true"/>
<show id="acme:securityClassification"/>
</field-visibility>
<edit-form template="../documentlibrary/forms/doclib-simple-metadata.ftl"/>
<appearance>
<field id="cm:name">
<control>
<control-param name="maxLength">255</control-param>
</control>
</field>
<field id="cm:title">
<control template="/org/alfresco/components/form/controls/textfield.ftl"/>
</field>
<field id="cm:description">
<control>
<control-param name="activateLinks">true</control-param>
</control>
</field>
<field id="cm:taggable">
<control>
<control-param name="compactMode">true</control-param>
<control-param name="params">aspect=cm:taggable</control-param>
<control-param name="createNewItemUri">/api/tag/workspace/SpacesStore</control-param>
<control-param name="createNewItemIcon">tag</control-param>
</control>
</field>
<field id="cm:categories">
<control>
<control-param name="compactMode">true</control-param>
</control>
</field>
<!-- ACME Props appearance -->
<set id="acmeDocSet" appearance="bordered-panel" label-id="form.set.label.acme.document"/>
<field id="acme:documentId" label-id="form.field.label.acme.documentId" set="acmeDocSet">
<control template="/org/alfresco/components/form/controls/textfield.ftl"/>
</field>
<field id="acme:securityClassification" label-id="form.field.label.acme.securityClassification"
set="acmeDocSet"/>
</appearance>
</form>
<!-- Document Library Inline Edit form -->
<form id="doclib-inline-edit">
<field-visibility>
<show id="cm:name"/>
<show id="cm:content" force="true"/>
<show id="cm:title" force="true"/>
<show id="cm:description" force="true"/>
<!-- ACME custom props -->
<show id="acme:documentId" force="true"/>
<show id="acme:securityClassification"/>
</field-visibility>
<appearance>
<field id="cm:name">
<control>
<control-param name="maxLength">255</control-param>
</control>
</field>
<field id="cm:title">
<control template="/org/alfresco/components/form/controls/textfield.ftl"/>
</field>
<field id="cm:content" label-id="">
<control>
<control-param name="editorAppearance">explorer</control-param>
<control-param name="forceEditor">true</control-param>
</control>
</field>
<!-- ACME Props appearance -->
<set id="acmeDocSet" appearance="bordered-panel" label-id="form.set.label.acme.document"/>
<field id="acme:documentId" label-id="form.field.label.acme.documentId" set="acmeDocSet">
<control template="/org/alfresco/components/form/controls/textfield.ftl"/>
</field>
<field id="acme:securityClassification" label-id="form.field.label.acme.securityClassification"
set="acmeDocSet"/>
</appearance>
</form>
</forms>
</config>
<!-- Create and search forms for acme:document -->
<config evaluator="model-type" condition="acme:document">
<forms>
<form>
<field-visibility>
<show id="cm:name"/>
<show id="cm:content" force="true"/>
<show id="cm:title" force="true"/>
<show id="cm:description" force="true"/>
<show id="mimetype"/>
<show id="app:editInline" force="true"/>
<!-- ACME custom props -->
<show id="acme:documentId" force="true"/>
<show id="acme:securityClassification"/>
</field-visibility>
<appearance>
<field id="cm:name">
<control>
<control-param name="maxLength">255</control-param>
</control>
</field>
<field id="cm:title">
<control template="/org/alfresco/components/form/controls/textfield.ftl"/>
</field>
<field id="cm:content" label-id="">
<control>
<control-param name="editorAppearance">explorer</control-param>
</control>
</field>
<field id="mimetype">
<control template="/org/alfresco/components/form/controls/hidden.ftl">
<control-param name="contextProperty">mimeType</control-param>
</control>
</field>
<field id="app:editInline">
<control template="/org/alfresco/components/form/controls/hidden.ftl">
<control-param name="contextProperty">editInline</control-param>
</control>
</field>
<!-- ACME Props appearance -->
<set id="acmeDocSet" appearance="bordered-panel" label-id="form.set.label.acme.document"/>
<field id="acme:documentId" label-id="form.field.label.acme.documentId" set="acmeDocSet">
<control template="/org/alfresco/components/form/controls/textfield.ftl"/>
</field>
<field id="acme:securityClassification" label-id="form.field.label.acme.securityClassification"
set="acmeDocSet"/>
</appearance>
</form>
<!-- Search form -->
<form id="search">
<field-visibility>
<show id="cm:name"/>
<show id="cm:title" force="true"/>
<show id="cm:description" force="true"/>
<show id="mimetype"/>
<show id="cm:modified"/>
<show id="cm:modifier"/>
<!-- ACME custom props -->
<show id="acme:documentId" force="true"/>
<show id="acme:securityClassification"/>
</field-visibility>
<appearance>
<field id="mimetype">
<control template="/org/alfresco/components/form/controls/mimetype.ftl"/>
</field>
<field id="cm:modifier">
<control>
<control-param name="forceEditable">true</control-param>
</control>
</field>
<field id="cm:modified">
<control template="/org/alfresco/components/form/controls/daterange.ftl"/>
</field>
<!-- ACME Props appearance -->
<set id="acmeDocSet" appearance="bordered-panel" label-id="form.set.label.acme.document"/>
<field id="acme:documentId" label-id="form.field.label.acme.documentId" set="acmeDocSet">
<control template="/org/alfresco/components/form/controls/textfield.ftl"/>
</field>
<field id="acme:securityClassification" label-id="form.field.label.acme.securityClassification"
set="acmeDocSet"/>
</appearance>
</form>
</forms>
</config>
</alfresco-config>

View File

@@ -1,14 +0,0 @@
<!-- Share configuration related to this particular Share module extension, such as:
- Doclib action config
- Form config
- Aspect and Type config
Note. Any configuration related to the whole Share.war webapp
(i.e. not specific to this share extension) should be
placed in the environment specific config:
allinone/share-war/src/main/resources/alfresco/web-extension/share-config-custom.xml file
-->
<alfresco-config>
</alfresco-config>

View File

@@ -6,4 +6,20 @@
# Doc Lib Action Forms labels
#
# Labels for custom types and aspects
# Used in "Manage Aspects" and "Change Type" dialogs
#
type.acme_document=ACME Document
aspect.acme_securityClassified=Security Classified
# View,Edit,Search,Create Form labels for types and aspects
#
form.set.label.acme.document= ACME Document Information
form.field.label.acme.documentId=ACME Document Id
form.field.label.acme.securityClassification=Security Classification
# Advanced Search Form labels (only for types)
#
form.label.advancedsearch.acmeDocument=ACME Documents
form.description.advancedsearch.acmeDocument=Search for any ACME Documents

View File

@@ -9,7 +9,7 @@
<parent>
<groupId>org.alfresco.maven</groupId>
<artifactId>alfresco-sdk-aggregator</artifactId>
<version>3.0.0-beta-2</version>
<version>3.0.0-beta-4</version>
<relativePath>../../pom.xml</relativePath>
</parent>

View File

@@ -8,7 +8,7 @@
<parent>
<groupId>org.alfresco.maven</groupId>
<artifactId>alfresco-sdk-aggregator</artifactId>
<version>3.0.0-beta-2</version>
<version>3.0.0-beta-4</version>
<relativePath>../../pom.xml</relativePath>
</parent>
@@ -134,6 +134,13 @@
<artifactId>mojo-executor</artifactId>
<version>2.2.0</version>
</dependency>
<!-- ZIP directories in an easy way -->
<dependency>
<groupId>org.zeroturnaround</groupId>
<artifactId>zt-zip</artifactId>
<version>1.9</version>
<type>jar</type>
</dependency>
</dependencies>
<reporting>

View File

@@ -17,7 +17,8 @@
*/
package org.alfresco.maven.plugin;
import org.apache.commons.io.FileUtils;
import org.alfresco.maven.plugin.config.ModuleDependency;
import org.alfresco.maven.plugin.config.TomcatDependency;
import org.apache.commons.lang.StringUtils;
import org.apache.maven.execution.MavenSession;
import org.apache.maven.model.Dependency;
@@ -31,9 +32,9 @@ import org.apache.maven.plugins.annotations.LifecyclePhase;
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.ResolutionScope;
import org.apache.maven.project.MavenProject;
import org.zeroturnaround.zip.ZipUtil;
import java.io.File;
import java.io.IOException;
import java.util.*;
import static org.twdata.maven.mojoexecutor.MojoExecutor.*;
@@ -52,7 +53,6 @@ import static org.twdata.maven.mojoexecutor.MojoExecutor.*;
requiresDependencyResolution = ResolutionScope.TEST)
public class RunMojo extends AbstractMojo {
public static final String MAVEN_DEPENDENCY_PLUGIN_VERSION = "2.10";
public static final String MAVEN_WAR_PLUGIN_VERSION = "2.6";
public static final String MAVEN_INSTALL_PLUGIN_VERSION = "2.5.2";
public static final String MAVEN_REPLACER_PLUGIN_VERSION = "1.5.3";
public static final String MAVEN_RESOURCE_PLUGIN_VERSION = "2.7";
@@ -77,7 +77,7 @@ public class RunMojo extends AbstractMojo {
/**
* The following properties that start with 'maven.' are used to control the
* Alfresco Maven plugin itself.
* <p/>
* <pre>
* For example:
* {@code
* <plugin>
@@ -101,6 +101,7 @@ public class RunMojo extends AbstractMojo {
* </configuration>
* </plugin>
* }
* </pre>
*/
/**
@@ -113,9 +114,27 @@ public class RunMojo extends AbstractMojo {
* Switch to enable/disable the H2 database when running embedded Tomcat.
* This also brings in the needed H2 database scripts.
*/
@Parameter(property = "maven.alfresco.enableH2", defaultValue = "true")
@Parameter(property = "maven.alfresco.enableH2", defaultValue = "false")
protected boolean enableH2;
/**
* Switch to enable/disable the MySQL database when running embedded Tomcat.
*/
@Parameter(property = "maven.alfresco.enableMySQL", defaultValue = "false")
protected boolean enableMySQL;
/**
* Switch to enable/disable the PostgreSQL database when running embedded Tomcat.
*/
@Parameter(property = "maven.alfresco.enablePostgreSQL", defaultValue = "false")
protected boolean enablePostgreSQL;
/**
* Switch to enable/disable the Enterprise database (such as Oracle or MS SQL Server) when running embedded Tomcat.
*/
@Parameter(property = "maven.alfresco.enableEnterpriseDb", defaultValue = "false")
protected boolean enableEnterpriseDb;
/**
* Switch to enable/disable the Platform/Repository (alfresco.war) when running embedded Tomcat.
*/
@@ -176,6 +195,14 @@ public class RunMojo extends AbstractMojo {
@Parameter(property = "maven.alfresco.edition", defaultValue = ALFRESCO_COMMUNITY_EDITION)
protected String alfrescoEdition;
/**
* Tomcat Dependencies that should be added to the Embedded Tomcat configuration before start.
* Normally there would not be any extra dependencies, but could be if you run an Enterprise database
* such as Oracle, for which there's no quick config, such as enableH2, enableMySQL, or enablePostgreSQL.
*/
@Parameter(property = "maven.alfresco.tomcat.dependencies", defaultValue = "")
protected List<TomcatDependency> tomcatDependencies;
/**
* Maven GAV properties for standard Alfresco web applications.
*/
@@ -200,7 +227,7 @@ public class RunMojo extends AbstractMojo {
@Parameter(property = "alfresco.share.version", defaultValue = "5.1.g")
protected String alfrescoShareVersion;
@Parameter(property = "alfresco.api.explorer.version", defaultValue = "1.0")
@Parameter(property = "alfresco.api.explorer.version", defaultValue = "1.2")
protected String alfrescoApiExplorerVersion;
/**
@@ -219,13 +246,6 @@ public class RunMojo extends AbstractMojo {
private String runnerAlfrescoPlatformVersion;
private String runnerAlfrescoShareVersion;
/**
* Database JDBC connection URL
* TODO: Is this parameter needed here?
*/
// @Parameter(property = "alfresco.db.url", defaultValue = "jdbc:h2:./${alfresco.data.location}/h2_data/${alfresco.db.name};${alfresco.db.params}")
// protected String alfrescoDbUrl;
/**
* The Maven environment that this mojo is executed in
*/
@@ -247,6 +267,7 @@ public class RunMojo extends AbstractMojo {
if (enableTestProperties) {
copyAlfrescoGlobalProperties();
renameAlfrescoGlobalProperties();
}
if (enablePlatform) {
@@ -258,6 +279,7 @@ public class RunMojo extends AbstractMojo {
}
if (startTomcat) {
checkDatabaseConfig();
startTomcat();
}
}
@@ -430,14 +452,14 @@ public class RunMojo extends AbstractMojo {
}
/**
* Copy the alfresco-global.properties file that will be used when
* running Alfresco. It contains database connection parameters and
* Copy the different alfresco-global-*.properties files (there are one for each open source db and one for
* enterprise db config) that will be used when running Alfresco. It contains database connection parameters and
* other general configuration for Alfresco Repository (alfresco.war)
*
* @throws MojoExecutionException
*/
protected void copyAlfrescoGlobalProperties() throws MojoExecutionException {
getLog().info("Copying alfresco-global.properties to test resources");
getLog().info("Copying and filtering alfresco-global-*.properties files to target/test-classes");
executeMojo(
plugin(
groupId("org.apache.maven.plugins"),
@@ -461,8 +483,48 @@ public class RunMojo extends AbstractMojo {
);
}
/**
* Rename the configured database specific alfresco-global-*.properties file to
* alfresco-global.properties so it will be used during Tomcat run.
*
* @throws MojoExecutionException
*/
protected void renameAlfrescoGlobalProperties() throws MojoExecutionException {
String alfrescoGlobalFilePath = "${project.build.testOutputDirectory}/alfresco-global-";
if (enableH2) {
alfrescoGlobalFilePath += "h2.properties";
getLog().info("Renaming alfresco-global-h2.properties to alfresco-global.properties");
} else if (enableMySQL) {
alfrescoGlobalFilePath += "mysql.properties";
getLog().info("Renaming alfresco-global-mysql.properties to alfresco-global.properties");
} else if (enablePostgreSQL) {
alfrescoGlobalFilePath += "postgresql.properties";
getLog().info("Renaming alfresco-global-postgresql.properties to alfresco-global.properties");
} else if (enableEnterpriseDb) {
alfrescoGlobalFilePath += "enterprise.properties";
getLog().info("Renaming alfresco-global-enterprise.properties to alfresco-global.properties");
} else {
throw new MojoExecutionException("Invalid database configuration, use enableH2, enableMySQL, " +
"enablePostgreSQL, or enabaleEnterpriseDb");
}
executeMojo(
plugin(
groupId("com.coderplus.maven.plugins"),
artifactId("copy-rename-maven-plugin"),
version("1.0")
),
goal("rename"),
configuration(
element(name("sourceFile"), alfrescoGlobalFilePath),
element(name("destinationFile"), "${project.build.testOutputDirectory}/alfresco-global.properties")
),
execEnv
);
}
/**
* Copy the Alfresco Enterprise license to its correct place in the Platform WAR, if it exists.
* It is not enough to have it on the test classpath, then it will start up as Trial license...
*
* @throws MojoExecutionException
*/
@@ -488,7 +550,7 @@ public class RunMojo extends AbstractMojo {
element(name("outputDirectory"), licDestDir),
element(name("resources"),
element(name("resource"),
element(name("directory"), "src/main/resources/alfresco/extension/license"),
element(name("directory"), "src/test/license"),
element(name("includes"),
element(name("include"), "*.lic")
),
@@ -500,7 +562,6 @@ public class RunMojo extends AbstractMojo {
);
}
/**
* Build the customized Platform webapp (i.e. the Repository, alfresco.war)
* that should be deployed by Tomcat by applying all AMPs and JARs from
@@ -557,7 +618,7 @@ public class RunMojo extends AbstractMojo {
List<Element> ampModules = new ArrayList<>();
List<Element> jarModules = new ArrayList<>();
if (modules != null) {
if (modules != null && modules.size() > 0) {
for (ModuleDependency moduleDep : modules) {
Element el = element(name("artifactItem"),
element(name("groupId"), moduleDep.getGroupId()),
@@ -633,8 +694,8 @@ public class RunMojo extends AbstractMojo {
// Then apply all these amps to the unpacked war
// Call the Alfresco Maven Plugin Install Mojo directly, so we don't have to keep SDK version info here
String ampsLocation = project.getBasedir() + "/target/" + ampsModuleDir;
String warLocation = project.getBasedir() + "/target/" + getWarName(warName);
String ampsLocation = project.getBuild().getDirectory() + "/" + ampsModuleDir;
String warLocation = project.getBuild().getDirectory() + "/" + getWarName(warName);
InstallMojo installMojo = new InstallMojo();
installMojo.setAmpLocation(new File(ampsLocation));
installMojo.setWarLocation(new File(warLocation));
@@ -676,39 +737,12 @@ public class RunMojo extends AbstractMojo {
final String warSourceDir = getWarOutputDir(warName);
// Package the customized war file
executeMojo(
plugin(
groupId("org.apache.maven.plugins"),
artifactId("maven-war-plugin"),
version(MAVEN_WAR_PLUGIN_VERSION)
),
goal("war"),
configuration(
element(name("warName"), warName),
element(name("warSourceDirectory"), warSourceDir),
// Specifically tell the archiver where the manifest file is,
// so a new manifest is not generated.
// We are picking the manifest from the original war.
// If we don't do this, then customized share.war will not start properly.
element(name("archive"),
element(name("manifestFile"), warSourceDir + "/META-INF/MANIFEST.MF")
)
)
, execEnv
);
// Note. don't use the maven-war-plugin here as it will package the module files twice, once from the
// target/classes dir and once via the JAR
String warPath = project.getBuild().getDirectory() + "/" + warName + ".war";
ZipUtil.pack(new File(warSourceDir), new File(warPath));
// Delete temporary webapp assembly dir, so it is not added to next webapp that is assembled...
// (otherwise share.war will contain alfresco.war stuff)
String tempAssemblyDir = project.getBasedir() + "/target/" + project.getArtifactId() + "-" + project.getVersion();
getLog().info("Deleting temp webapp assembly dir: " + tempAssemblyDir);
File tempWebAppAssemblyDir = new File(tempAssemblyDir);
try {
FileUtils.deleteDirectory(tempWebAppAssemblyDir);
} catch (IOException e) {
e.printStackTrace();
}
// Install the customized war file in local maven repo
// Install the customized war file in the local maven repo
executeMojo(
plugin(
groupId("org.apache.maven.plugins"),
@@ -717,7 +751,7 @@ public class RunMojo extends AbstractMojo {
),
goal("install-file"),
configuration(
element(name("file"), "${project.build.directory}/" + warName + ".war"),
element(name("file"), warPath),
element(name("groupId"), "${project.groupId}"),
element(name("artifactId"), warArtifactId),
element(name("version"), "${project.version}"),
@@ -729,6 +763,30 @@ public class RunMojo extends AbstractMojo {
return warArtifactId;
}
/**
* Check that a database configuration has been supplied correctly
*/
private void checkDatabaseConfig() throws MojoExecutionException {
if (enableH2 && !enableMySQL && !enablePostgreSQL) {
// Run with the H2 database
return;
} else if (!enableH2 && enableMySQL && !enablePostgreSQL) {
// Run with the MySQL database
return;
} else if (!enableH2 && !enableMySQL && enablePostgreSQL) {
// Run with the PostgreSQL database
return;
} else if (!enableH2 && !enableMySQL && !enablePostgreSQL) {
// Run with a database configured via Tomcat Dependencies
return;
} else {
throw new MojoExecutionException(
"Invalid database configuration, " +
"should be enableH2 or enableMySQL or enablePostgreSQL " +
"or none (i.e. config via Tomcat Dependencies)");
}
}
/**
* Start up the embedded Tomcat server with the webapps that has been
* configured in the SDK project.
@@ -738,27 +796,43 @@ public class RunMojo extends AbstractMojo {
protected void startTomcat() throws MojoExecutionException {
getLog().info("Starting Tomcat");
List<Dependency> tomcatDependencies = new ArrayList<Dependency>();
List<Dependency> tomcatPluginDependencies = new ArrayList<Dependency>();
ArrayList webapps2Deploy = new ArrayList<Element>();
// Add the basic Tomcat dependencies
tomcatDependencies.add(
tomcatPluginDependencies.add(
// Packaging goes faster with this lib
dependency("org.codehaus.plexus", "plexus-archiver", "2.3"));
tomcatDependencies.add(
tomcatPluginDependencies.add(
// The following dependency is needed, otherwise you get
// Caused by: java.lang.NoSuchMethodError:
// javax.servlet.ServletContext.getSessionCookieConfig()Ljavax/servlet/SessionCookieConfig
// This method is in Servlet API 3.0
dependency("javax.servlet", "javax.servlet-api", "3.0.1"));
// Do we have any extra Tomcat Plugin dependencies to include?
if (tomcatDependencies != null && tomcatDependencies.size() > 0) {
for (TomcatDependency tomcatDep : tomcatDependencies) {
tomcatPluginDependencies.add(
dependency(tomcatDep.getGroupId(), tomcatDep.getArtifactId(), tomcatDep.getVersion()));
}
}
if (enableH2) {
tomcatDependencies.add(
tomcatPluginDependencies.add(
// Bring in the flat file H2 database
dependency("com.h2database", "h2", "1.4.190"));
// Copy the h2 scripts
copyH2Dialect();
} else if (enableMySQL) {
tomcatPluginDependencies.add(
// Bring in the MySQL JDBC Driver
dependency("mysql", "mysql-connector-java", "5.1.32"));
} else if (enablePostgreSQL) {
tomcatPluginDependencies.add(
// Bring in the PostgreSQL JDBC Driver
dependency("org.postgresql", "postgresql", "9.4-1201-jdbc41"));
}
if (enablePlatform) {
@@ -792,12 +866,13 @@ public class RunMojo extends AbstractMojo {
groupId("org.apache.tomcat.maven"),
artifactId("tomcat7-maven-plugin"),
version(MAVEN_TOMCAT7_PLUGIN_VERSION),
tomcatDependencies
tomcatPluginDependencies
),
goal("run"),
configuration(
/*
* SDK Projects doesn't have packaging set to 'war', they are JARs or POMs, this setting ignores that fact.
* SDK Projects doesn't have packaging set to 'war', they are JARs or POMs,
* this setting ignores that fact.
*/
element(name("ignorePackaging"), "true"),
@@ -810,10 +885,11 @@ public class RunMojo extends AbstractMojo {
* (which lives in Servlet API 3)
*
*/
//element(name("useSeparateTomcatClassLoader"), "true"),
element(name("useSeparateTomcatClassLoader"), "true"),
/*
* Bring in stuff in the test classpath, such as the alfresco-global.properties that should be used
* Bring in stuff in the test classpath, such as the alfresco-global.properties
* that should be used
*/
element(name("useTestClasspath"), "true"),
@@ -922,9 +998,7 @@ public class RunMojo extends AbstractMojo {
* @return true if platform version >= 5.1
*/
private boolean isPlatformVersionGtOrEqTo51() {
int versionNumber = Integer.parseInt(
alfrescoPlatformVersion.replaceAll("[^0-9]", "").substring(0, 2));
if (versionNumber >= 51) {
if (getPlatformVersionNumber() >= 51) {
return true;
}
@@ -938,15 +1012,22 @@ public class RunMojo extends AbstractMojo {
* @return true if platform version <= 4.2
*/
private boolean isPlatformVersionLtOrEqTo42() {
int versionNumber = Integer.parseInt(
alfrescoPlatformVersion.replaceAll("[^0-9]", "").substring(0, 2));
if (versionNumber <= 42) {
if (getPlatformVersionNumber() <= 42) {
return true;
}
return false;
}
/**
* Grabs the first 2 numbers in the version string
*
* @return major and minor version as int, such as 41,50,51
*/
private int getPlatformVersionNumber() {
return Integer.parseInt(alfrescoPlatformVersion.replaceAll("[^0-9]", "").substring(0, 2));
}
/**
* Get the Solr artifactId, it changes when we move to Solr 4 in Alfresco version 5
*
@@ -1098,7 +1179,7 @@ public class RunMojo extends AbstractMojo {
* @return a directory such as: .../aio/target/platform-war
*/
private String getWarOutputDir(String baseWarName) {
return "${project.build.directory}/" + getWarName(baseWarName);
return project.getBuild().getDirectory() + "/" + getWarName(baseWarName);
}
/**

View File

@@ -0,0 +1,94 @@
/**
* Copyright (C) 2016 Alfresco Software Limited.
* <p/>
* This file is part of the Alfresco SDK Samples project.
* <p/>
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p/>
* http://www.apache.org/licenses/LICENSE-2.0
* <p/>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.alfresco.maven.plugin.config;
/**
* A Maven Dependency containing the Group ID, Artifact ID, and Version (GAV).
*
* @author martin.bergljung@alfresco.com
* @version 1.0
* @since 3.0.0
*/
public abstract class MavenDependency {
private String groupId;
private String artifactId;
private String version;
public MavenDependency() {}
public MavenDependency(String g, String a, String v) {
this.groupId = g;
this.artifactId = a;
this.version = v;
}
public String getGroupId() {
return groupId;
}
public void setGroupId(String groupId) {
this.groupId = groupId;
}
public String getArtifactId() {
return artifactId;
}
public void setArtifactId(String artifactId) {
this.artifactId = artifactId;
}
public String getVersion() {
return version;
}
public void setVersion(String version) {
this.version = version;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof MavenDependency)) return false;
MavenDependency that = (MavenDependency) o;
if (!groupId.equals(that.groupId)) return false;
if (!artifactId.equals(that.artifactId)) return false;
return version.equals(that.version);
}
@Override
public int hashCode() {
int result = groupId.hashCode();
result = 31 * result + artifactId.hashCode();
result = 31 * result + version.hashCode();
return result;
}
@Override
public String toString() {
return "MavenDependency{" +
"groupId='" + groupId + '\'' +
", artifactId='" + artifactId + '\'' +
", version='" + version + '\'' +
'}';
}
}

View File

@@ -16,72 +16,59 @@
* limitations under the License.
*/
package org.alfresco.maven.plugin;
package org.alfresco.maven.plugin.config;
import org.apache.commons.lang.StringUtils;
/**
* Defines an Alfresco extension module dependency (JAR or AMP) to be
* overlayed on an Alfresco webapp file via Maven WAR plugin.
* overlayed on an Alfresco webapp file.
* <p/>
* This is so we can skip the WAR projects in the AIO project,
* and so we can include the Share Services AMP when running
* with a simple platform JAR.
* <p/>
* This class is used by the RunMojo class.
* <p/>
* Alfresco Maven Plugin config looks something like this:
* <pre>
* {@code
* <platformModules>
* <moduleDependency>
* <groupId>${alfresco.groupId}</groupId>
* <artifactId>alfresco-share-services</artifactId>
* <version>${alfresco.share.version}</version>
* <type>amp</type>
* </moduleDependency>
* <moduleDependency>
* <groupId>${project.groupId}</groupId>
* <artifactId>${project.artifactId}</artifactId>
* <version>${project.version}</version>
* </moduleDependency>
* </platformModules>
* }
* </pre>
*
* @author martin.bergljung@alfresco.com
* @version 1.0
* @since 3.0.0
*/
public class ModuleDependency {
public class ModuleDependency extends MavenDependency {
public static final String TYPE_JAR = "jar";
public static final String TYPE_AMP = "amp";
private String groupId;
private String artifactId;
private String version;
private String type = TYPE_JAR;
public ModuleDependency() {}
public ModuleDependency(String g, String a, String v) {
this.groupId = g;
this.artifactId = a;
this.version = v;
public ModuleDependency() {
super();
}
public ModuleDependency(String g, String a, String v, String t) {
this.groupId = g;
this.artifactId = a;
this.version = v;
super(g,a,v);
this.type = t;
}
public String getGroupId() {
return groupId;
}
public void setGroupId(String groupId) {
this.groupId = groupId;
}
public String getArtifactId() {
return artifactId;
}
public void setArtifactId(String artifactId) {
this.artifactId = artifactId;
}
public String getVersion() {
return version;
}
public void setVersion(String version) {
this.version = version;
}
public String getType() {
return type;
}
@@ -102,21 +89,16 @@ public class ModuleDependency {
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof ModuleDependency)) return false;
if (!super.equals(o)) return false;
ModuleDependency that = (ModuleDependency) o;
if (!groupId.equals(that.groupId)) return false;
if (!artifactId.equals(that.artifactId)) return false;
if (!version.equals(that.version)) return false;
return !(type != null ? !type.equals(that.type) : that.type != null);
}
@Override
public int hashCode() {
int result = groupId.hashCode();
result = 31 * result + artifactId.hashCode();
result = 31 * result + version.hashCode();
int result = super.hashCode();
result = 31 * result + (type != null ? type.hashCode() : 0);
return result;
}
@@ -124,9 +106,9 @@ public class ModuleDependency {
@Override
public String toString() {
return "ModuleDependency{" +
"groupId='" + groupId + '\'' +
", artifactId='" + artifactId + '\'' +
", version='" + version + '\'' +
"groupId='" + getGroupId() + '\'' +
", artifactId='" + getArtifactId() + '\'' +
", version='" + getVersion() + '\'' +
", type='" + type + '\'' +
'}';
}

View File

@@ -0,0 +1,61 @@
/**
* Copyright (C) 2016 Alfresco Software Limited.
* <p/>
* This file is part of the Alfresco SDK Samples project.
* <p/>
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p/>
* http://www.apache.org/licenses/LICENSE-2.0
* <p/>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.alfresco.maven.plugin.config;
import org.apache.commons.lang.StringUtils;
/**
* Tomcat Dependency used in Embedded Tomcat Maven plugin configuration.
* <p/>
* Alfresco Maven Plugin config looks something like this:
* <pre>
* {@code
* <tomcatDependencies>
* <tomcatDependency>
* <groupId>mysql</groupId>
* <artifactId>mysql-connector-java</artifactId>
* <version>5.1.32</version>
* </tomcatDependency>
* <tomcatDependencies>
* }
* </pre>
*
* @author martin.bergljung@alfresco.com
* @version 1.0
* @since 3.0.0
*/
public class TomcatDependency extends MavenDependency {
public TomcatDependency() {
super();
}
public TomcatDependency(String g, String a, String v) {
super(g,a,v);
}
@Override
public String toString() {
return "TomcatDependency{" +
"groupId='" + getGroupId() + '\'' +
", artifactId='" + getArtifactId() + '\'' +
", version='" + getVersion() + '\'' +
'}';
}
}

82
pom.xml
View File

@@ -3,7 +3,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>org.alfresco.maven</groupId>
<artifactId>alfresco-sdk-aggregator</artifactId>
<version>3.0.0-beta-2</version>
<version>3.0.0-beta-4</version>
<name>Alfresco SDK</name>
<description>This aggregator Project builds all modules required for the Alfresco SDK</description>
<packaging>pom</packaging>
@@ -30,7 +30,7 @@
<connection>scm:git:${scm.url.base}.git</connection>
<developerConnection>scm:git:${scm.url.base}</developerConnection>
<url>${scm.url.base}</url>
<tag>alfresco-sdk-aggregator-3.0.0-beta-2</tag>
<tag>alfresco-sdk-aggregator-3.0.0-beta-4</tag>
</scm>
<developers>
@@ -186,7 +186,38 @@
</repository>
</repositories>
<distributionManagement>
<repository>
<id>central-releases-staging</id>
<url>https://oss.sonatype.org/service/local/staging/deploy/maven2</url>
</repository>
<snapshotRepository>
<id>central-snapshots</id>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
</snapshotRepository>
<site>
<id>alfresco-docs</id>
<url>dav:${maven.site.url}</url>
</site>
</distributionManagement>
<profiles>
<profile>
<id>internal-release</id>
<activation>
<property>
<name>internal.release</name>
<value>true</value>
</property>
</activation>
<distributionManagement>
<repository>
<id>alfresco-releases</id>
<url>https://artifacts.alfresco.com/nexus/content/repositories/releases/</url>
</repository>
</distributionManagement>
</profile>
<profile>
<id>exclude-enterprise-tests-for-archetypes</id>
<activation>
@@ -212,7 +243,7 @@
<alfresco.sdk.tests.exclude />
</properties>
</profile>
<profile>
<id>sdk-release</id>
<properties>
@@ -224,37 +255,6 @@
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.10.1</version>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
<configuration>
<!-- Add this to build Javadoc with JDK8
<additionalparam>-Xdoclint:none</additionalparam>
-->
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
@@ -310,20 +310,6 @@
</plugin>
</plugins>
</reporting>
<distributionManagement>
<repository>
<id>central-releases-staging</id>
<url>https://oss.sonatype.org/service/local/staging/deploy/maven2</url>
</repository>
<snapshotRepository>
<id>central-snapshots</id>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
</snapshotRepository>
<site>
<id>alfresco-docs</id>
<url>dav:${maven.site.url}</url>
</site>
</distributionManagement>
</profile>
<!-- Attempt (failed) to retain run.sh permissions. Zip files are bad at this, full stop.
<profile>

View File

@@ -14,12 +14,12 @@
<parent>
<groupId>org.alfresco.maven</groupId>
<artifactId>alfresco-sdk-aggregator</artifactId>
<version>3.0.0-beta-2</version>
<version>3.0.0-beta-4</version>
<relativePath>../../pom.xml</relativePath>
</parent>
<!-- This defines the version of the SDK in terms of features -->
<version>3.0.0-beta-2</version>
<version>3.0.0-beta-4</version>
<properties>
@@ -150,7 +150,7 @@
- Maven Alfresco plugin that enables Maven to handle AMP files (alfresco-maven-plugin)
- Alfresco Rapid Application Development module (alfresco-rad)
-->
<maven.alfresco.version>3.0.0-beta-2</maven.alfresco.version>
<maven.alfresco.version>3.0.0-beta-4</maven.alfresco.version>
<!-- Setup the default Embedded Tomcat port for use by the tomcat7-maven-plugin so
it can be accessed from the Groovy scripts and other places -->