mirror of
https://github.com/Alfresco/alfresco-sdk.git
synced 2025-10-01 14:41:57 +00:00
Experimental / trunk switch - Part 3 - Copying of experimental branch to trunk
git-svn-id: http://maven-alfresco-archetypes.googlecode.com/svn/trunk@624 04253f4f-3451-0410-a141-5562f1e59037
This commit is contained in:
252
alfresco-lifecycle-aggregator/DOCS.txt
Normal file
252
alfresco-lifecycle-aggregator/DOCS.txt
Normal file
@@ -0,0 +1,252 @@
|
|||||||
|
This document needs updating...
|
||||||
|
|
||||||
|
**********************************
|
||||||
|
Disclaimer for maven-alfresco list
|
||||||
|
**********************************
|
||||||
|
|
||||||
|
This codebase is currently work in progress; the effort have been split in three directions:
|
||||||
|
a) The definition of 2 POM files that can handle versions and common build behaviors/features
|
||||||
|
b) The writing of an alfresco-maven-plugin to enable amp-to-war overlay provided by Alfresco
|
||||||
|
Repository built-in features (ModuleManagementTool) and replace the maven-amp-plugin (big
|
||||||
|
rewriting of the maven-war-plugin)
|
||||||
|
c) The definition of (initially 2) archetypes that show some simple project's configuration using
|
||||||
|
the parent POMs
|
||||||
|
|
||||||
|
Most of the build features have been successfully ported to a new structure, whose main advantage is
|
||||||
|
to keep pom.xml files extremely simple and readable (since a lot of logic have been moved to the parent).
|
||||||
|
Inherited behaviours are configurable simply defining specific properties in the project's or module's pom.xml
|
||||||
|
(see documentation below).
|
||||||
|
|
||||||
|
Here follows a list of build features that have not been ported yet:
|
||||||
|
- Maven SCM and release
|
||||||
|
- JBoss run
|
||||||
|
- Tomcat remote deployment
|
||||||
|
- Jetty Java source and resources reloading (Jetty currently runs .war files)
|
||||||
|
- Maven Site generation
|
||||||
|
- Maven reporting
|
||||||
|
- Maven distributionManagement
|
||||||
|
|
||||||
|
Apart from SCM and release, all the mentioned features are probably best suited for a more enterprise archetype,
|
||||||
|
using the Alfresco Web Integration POM as parent and adding more build features around Maven, Tomcat and JBoss.
|
||||||
|
|
||||||
|
******************
|
||||||
|
Alfresco Maven SDK
|
||||||
|
******************
|
||||||
|
|
||||||
|
The Maven SDK is an effort that have been developing in the last 5 years - mostly driven by community efforts on
|
||||||
|
Google Code (http://code.google.com/p/maven-alfresco-archetypes) - which delivers archetypes for building Alfresco
|
||||||
|
integration project with Maven; builds are based on artifacts that are deployed into maven.alfresco.com Repository
|
||||||
|
manually as a community effort.
|
||||||
|
|
||||||
|
The main advantages with the (currently official) Alfresco SDK follows:
|
||||||
|
|
||||||
|
- IDE-independent SDK, use IntelliJ, eMacs or any other IDE sto write your code
|
||||||
|
|
||||||
|
- No IDE manual configuration, all build-related features are provided by Apache Maven, which is the only
|
||||||
|
prerequisite to use this SDK
|
||||||
|
|
||||||
|
- Language independent, you don't like Maven? You can still use Ant, Ivy, Buildr, Gradle, Leiningen or any other build
|
||||||
|
system that is compatible with Maven artifact resolution mechanism; just configure maven.alfresco.com as (one of) your
|
||||||
|
Maven repositories and you're ready to go
|
||||||
|
|
||||||
|
- Javadoc and Sources support, provided by maven.alfresco.com related Maven artifacts; you don't need to manually
|
||||||
|
configure your IDE to attach (manually downloaded) sources to your (manually downloaded) binaries.
|
||||||
|
|
||||||
|
- Clean and readable, the build logic related with OOTB Alfresco features is wrapped in 50 lines of pom.xml
|
||||||
|
|
||||||
|
- Advanced build functionality, inherited by your parent POMs you can use embedded databases and j2ee
|
||||||
|
containers with (almost) no configuration at all, among other features exposed below.
|
||||||
|
|
||||||
|
- One mvn command to generate, one mvn command to run, this is all you need to do to have a local Alfresco running
|
||||||
|
on an empty laptop
|
||||||
|
|
||||||
|
- Supports community and enterprise flawlessly, allowing to switch one to another very easily
|
||||||
|
|
||||||
|
The following documentation aims to provide three different levels of complexity to tackle an Alfresco integration
|
||||||
|
project: simple, advanced and custom; the latter exposes in details the Maven Alfresco SDK features.
|
||||||
|
|
||||||
|
*************
|
||||||
|
Prerequisites
|
||||||
|
*************
|
||||||
|
|
||||||
|
The main and only prerequisite to follow reading this document is to have Apache Maven 3.0.3 (or higher) installed
|
||||||
|
on your machine; there is no preferred IDE nor web container and database requirements needed.
|
||||||
|
|
||||||
|
It is strongly advised to use the Apache Maven official binary distributions downloaded from maven.apache.org; avoid
|
||||||
|
OS-specific distributions as much as possible.
|
||||||
|
|
||||||
|
************
|
||||||
|
Use - Simple
|
||||||
|
************
|
||||||
|
|
||||||
|
If you're new to Alfresco, you probably want to know which is the impact of introducing such a technology within your
|
||||||
|
development team, run it locally, assess all development processes involved with the product and which
|
||||||
|
technologies/tools are best suited for those.
|
||||||
|
|
||||||
|
You can currently choose between two different flavors, depending on your final goal:
|
||||||
|
|
||||||
|
* If you want to assess efforts involved with AMP development, you can run the following commands:
|
||||||
|
|
||||||
|
1.
|
||||||
|
mvn archetype:generate \
|
||||||
|
-DarchetypeGroupId=org.alfresco.maven \
|
||||||
|
-DarchetypeArtifactId=quickstart-amp-archetype \
|
||||||
|
-DarchetypeVersion=1.0 \
|
||||||
|
-DgroupId=com.someco \
|
||||||
|
-DartifactId=alfresco-amp-quickstart \
|
||||||
|
-Dversion=1.0-SNAPSHOT \
|
||||||
|
-DarchetypeRepository=http://maven.alfresco.com/nexus/content/repositories/releases \
|
||||||
|
-DinteractiveMode=false
|
||||||
|
|
||||||
|
You can always switch Alfresco versions/editions by editing the <parent> coordinates of your generated pom.xml
|
||||||
|
|
||||||
|
2.
|
||||||
|
cd alfresco-amp-quickstart && MAVEN_OPTS="-Xms256m -Xmx1G -XX:PermSize=300m" mvn package -Drunamp
|
||||||
|
|
||||||
|
Browse to http://localhost:8080/amp-quickstart and you will find Alfresco Explorer Client running against a local
|
||||||
|
Alfresco Repository sitting on top of an H2 embedded database and loading your AMP package.
|
||||||
|
|
||||||
|
* If you want to customise Alfresco Explorer and/or Share clients, embed AMP packages/projects or simply run both
|
||||||
|
Alfresco Explorer and Share on the same machine, run the following commands:
|
||||||
|
|
||||||
|
1.
|
||||||
|
mvn archetype:generate \
|
||||||
|
-DarchetypeGroupId=org.alfresco.maven \
|
||||||
|
-DarchetypeArtifactId=quickstart-allinone-archetype \
|
||||||
|
-DarchetypeVersion=1.0 \
|
||||||
|
-DgroupId=com.someco \
|
||||||
|
-DartifactId=alfresco-allinone-quickstart \
|
||||||
|
-Dversion=1.0-SNAPSHOT \
|
||||||
|
-Dedition=community \
|
||||||
|
-DarchetypeRepository=http://maven.alfresco.com/nexus/content/repositories/releases \
|
||||||
|
-DinteractiveMode=false
|
||||||
|
|
||||||
|
2.
|
||||||
|
cd alfresco-allinone-quickstart && MAVEN_OPTS="-Xms256m -Xmx1G -XX:PermSize=300m" mvn package -Drun
|
||||||
|
|
||||||
|
Compared with the previous flavor, alfresco-allinone-quickstart is a Maven multi-module project, which also includes
|
||||||
|
an AMP project that gets 'overlaid' into both Alfresco and Share web applications.
|
||||||
|
Alfresco Explorer is available at http://localhost:8080/alfresco whereas Alfresco Share is available at
|
||||||
|
http://localhost:8080/share
|
||||||
|
|
||||||
|
************
|
||||||
|
Use - Custom
|
||||||
|
************
|
||||||
|
|
||||||
|
When the build logic becomes tough, integrating with third party technologies, introducing complex build scenarios,
|
||||||
|
you might want to have a lower integration level with Alfresco SDK; there are basically 2 big integration points
|
||||||
|
you can rely on, which are basically Alfresco-maintained POM files that provide:
|
||||||
|
|
||||||
|
- A list of Alfresco artifacts, including binaries, javadoc and sources, Maven plugins successfully tested against
|
||||||
|
the standard and supported build process; artifacts come with correct platform versions and editions
|
||||||
|
(community vs enterprise) according with the <groupId> and <version> tags parent coordinates.
|
||||||
|
You can simply define the following parent POM in your project's pom.xml:
|
||||||
|
|
||||||
|
<parent>
|
||||||
|
<groupId>org.alfresco.enterprise</groupId>
|
||||||
|
<artifactId>alfresco-platform-parent</artifactId>
|
||||||
|
<version>4.0.1</version>
|
||||||
|
</parent>
|
||||||
|
|
||||||
|
In Maven geek terms, this parent POM will define <dependencyManagement>, <pluginManagement> and <properties> elements
|
||||||
|
related with Alfresco-produced artifacts.
|
||||||
|
|
||||||
|
The main goal of this approach is to give you full access to Alfresco artifacts without needing to handle dependency
|
||||||
|
and plugin management inside your pom.xml.
|
||||||
|
|
||||||
|
Please note that Alfresco artifacts are not shipped with POM files at the moment, therefore transitive dependencies
|
||||||
|
are not handled; you will need to define them explicitly in your pom.xml (using <scope>provided</scope>
|
||||||
|
|
||||||
|
- A set of useful build features around Alfresco web integrations, which are also inherited by alfresco-platform-parent;
|
||||||
|
if you want to use it directly and skip alfresco-platform-parent, you can define:
|
||||||
|
|
||||||
|
<parent>
|
||||||
|
<groupId>org.alfresco.enterprise</groupId>
|
||||||
|
<artifactId>alfresco-developer-parent</artifactId>
|
||||||
|
<version>1</version>
|
||||||
|
</parent>
|
||||||
|
|
||||||
|
In this case you will have to re-define a list of properties to set your dependency versions:
|
||||||
|
|
||||||
|
<alfresco.version>4.0.1</alfresco.version>
|
||||||
|
<spring.version>3.0.5.RELEASE</spring.version>
|
||||||
|
<h2.version>1.3.158</h2.version>
|
||||||
|
<h2-support.version>1.2</h2-support.version>
|
||||||
|
<servlet.api.version>2.5</servlet.api.version>
|
||||||
|
<faces.version>1.1_02</faces.version>
|
||||||
|
<digester.version>1.6</digester.version>
|
||||||
|
<log4j.version>1.2.15</log4j.version>
|
||||||
|
|
||||||
|
Besides the alfresco-integration-parent items inherited, this parent POM provides 3 commonly used features that can
|
||||||
|
be easily enabled/disabled/configured:
|
||||||
|
|
||||||
|
* AMP overlay into an Alfresco (or Share) Extension
|
||||||
|
---
|
||||||
|
Activation: built-in
|
||||||
|
---
|
||||||
|
When your project (or sub-module) is a <packaging>war</packaging>, you can automatically include one or more
|
||||||
|
AMP files by defining the dependencies into the pom.xml, as follows:
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.mycompany</groupId>
|
||||||
|
<artifactId>amp-module</artifactId>
|
||||||
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
<type>amp</type>
|
||||||
|
</dependency>
|
||||||
|
The AMP files will be overlayed on top of your current WAR customizations, therefore
|
||||||
|
they can override the content of the original WAR.
|
||||||
|
|
||||||
|
-- oOo --
|
||||||
|
|
||||||
|
* Multi-environment property filtering
|
||||||
|
---
|
||||||
|
Activation: exists src/main/properties
|
||||||
|
---
|
||||||
|
You can enable multi-environment property filtering by simply creating the
|
||||||
|
src/main/properties/${env}/${webapp.resource.filter} file with your property values;
|
||||||
|
all files included in src/main/resources and src/main/properties will be filtered
|
||||||
|
with your properties defined; in order to switch between environments,
|
||||||
|
simply attach -Denv=yourenv to your mvn commands.
|
||||||
|
---
|
||||||
|
Properties
|
||||||
|
---
|
||||||
|
<env>local</env>
|
||||||
|
<webapp.resource.filter>alfresco-global.properties</webapp.resource.filter>
|
||||||
|
<webapp.resource.build.folder>${project.build.outputDirectory}</webapp.resource.build.folder>
|
||||||
|
<webapp.name>${project.artifactId}</webapp.name>
|
||||||
|
|
||||||
|
-- oOo --
|
||||||
|
|
||||||
|
* Jetty H2 configuration
|
||||||
|
---
|
||||||
|
Activation: exists jetty/jetty.xml
|
||||||
|
---
|
||||||
|
You can enable Jetty to run your application(s); by default Jetty will run all contexts
|
||||||
|
using jetty/jetty.xml as Jetty Server configuration, allowing to add the jndi resource
|
||||||
|
needed to start Alfresco Repository webapp; if you want to run multiple webapps - for
|
||||||
|
example share and alfresco - follow the example listed below:
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.mortbay.jetty</groupId>
|
||||||
|
<artifactId>maven-jetty-plugin</artifactId>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>run</id>
|
||||||
|
<goals><goal>run</goal></goals>
|
||||||
|
<phase>package</phase>
|
||||||
|
<configuration>
|
||||||
|
<contextPath>/</contextPath>
|
||||||
|
<webAppSourceDirectory>.</webAppSourceDirectory>
|
||||||
|
<webXml>jetty/root-web.xml</webXml>
|
||||||
|
<contextHandlers>
|
||||||
|
<contextHandler implementation="org.mortbay.jetty.webapp.WebAppContext">
|
||||||
|
<war>${project.basedir}/../alfresco/target/alfresco.war</war>
|
||||||
|
<contextPath>/alfresco</contextPath>
|
||||||
|
</contextHandler>
|
||||||
|
<contextHandler implementation="org.mortbay.jetty.webapp.WebAppContext">
|
||||||
|
<war>${project.basedir}/../share/target/share.war</war>
|
||||||
|
<contextPath>/share</contextPath>
|
||||||
|
</contextHandler>
|
||||||
|
</contextHandlers>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
199
alfresco-lifecycle-aggregator/README.txt
Normal file
199
alfresco-lifecycle-aggregator/README.txt
Normal file
@@ -0,0 +1,199 @@
|
|||||||
|
This document needs updating...
|
||||||
|
|
||||||
|
Archetypes using the SDK can be generated with:
|
||||||
|
|
||||||
|
mvn archetype:generate -DarchetypeCatalog=https://artifacts.alfresco.com/nexus/content/groups/public-snapshots/archetype-catalog.xml
|
||||||
|
|
||||||
|
**********
|
||||||
|
Disclaimer
|
||||||
|
**********
|
||||||
|
|
||||||
|
This codebase is currently work in progress; the effort have been split in three directions:
|
||||||
|
a) The definition of 2 POM files that can handle versions and common build behaviors/features
|
||||||
|
b) The writing of an alfresco-maven-plugin to enable amp-to-war overlay provided by Alfresco
|
||||||
|
Repository built-in features (ModuleManagementTool) and replace the maven-amp-plugin (big
|
||||||
|
rewriting of the maven-war-plugin)
|
||||||
|
c) The definition of (initially 2) archetypes that show some simple project's configuration using
|
||||||
|
the parent POMs
|
||||||
|
|
||||||
|
Most of the build features have been successfully ported to a new structure, whose main advantage is
|
||||||
|
to keep pom.xml files extremely simple and readable (since a lot of logic have been moved to the parent).
|
||||||
|
Inherited behaviours are configurable simply defining specific properties in the project's or module's pom.xml
|
||||||
|
(see documentation below).
|
||||||
|
|
||||||
|
Here follows a list of build features that have not been ported yet:
|
||||||
|
- Maven SCM and release
|
||||||
|
- JBoss run
|
||||||
|
- Tomcat remote deployment
|
||||||
|
- Jetty Java source and resources reloading (Jetty currently runs .war files)
|
||||||
|
- Maven Site generation
|
||||||
|
- Maven reporting
|
||||||
|
- Maven distributionManagement
|
||||||
|
|
||||||
|
Apart from SCM and release, all the mentioned features are probably best suited for a more enterprise archetype,
|
||||||
|
using the Alfresco Web Integration POM as parent and adding more build features around Maven, Tomcat and JBoss.
|
||||||
|
|
||||||
|
Regarding the POM files, I'd like to see them deployed on maven.alfresco.com, hopefully generated (by the
|
||||||
|
Alfresco build?) and tested for each Alfresco release.
|
||||||
|
|
||||||
|
--- oOo ---
|
||||||
|
|
||||||
|
*************
|
||||||
|
Prerequisites
|
||||||
|
*************
|
||||||
|
|
||||||
|
- Maven 3.0.3 (official binary distribution from maven.apache.org)
|
||||||
|
|
||||||
|
--- oOo ---
|
||||||
|
|
||||||
|
*************
|
||||||
|
Build and Run
|
||||||
|
*************
|
||||||
|
|
||||||
|
-----
|
||||||
|
Build
|
||||||
|
-----
|
||||||
|
All the steps that follow are necessary because neither POMs nor
|
||||||
|
alfresco-maven-plugin are yet available on maven.alfresco.com; as soon
|
||||||
|
as their implementation is consolidated, you will be able to skip
|
||||||
|
this first part and just enjoy the second.
|
||||||
|
---
|
||||||
|
mvn clean install
|
||||||
|
(with empty repository, Maven will download 365Mb)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
---
|
||||||
|
Run
|
||||||
|
---
|
||||||
|
cd archetypes/quickstart-allinone-archetype
|
||||||
|
MAVEN_OPTS="-Xms256m -Xmx1G -XX:PermSize=300m" mvn clean package -Drun
|
||||||
|
-> http://localhost:8080/alfresco and http://localhost:8080/share
|
||||||
|
--- OR
|
||||||
|
cd archetypes/quickstart-amp-archetype
|
||||||
|
MAVEN_OPTS="-Xms256m -Xmx1G -XX:PermSize=300m" mvn clean package -Drun-amp
|
||||||
|
-> http://localhost:8080/quickstart-amp-archetype
|
||||||
|
---
|
||||||
|
|
||||||
|
--- oOo ---
|
||||||
|
|
||||||
|
**********
|
||||||
|
Archetypes
|
||||||
|
**********
|
||||||
|
|
||||||
|
---------------------------
|
||||||
|
ALFRESCO ALLINONE ARCHETYPE
|
||||||
|
---------------------------
|
||||||
|
- run mvn clean install to package all apps
|
||||||
|
- run mvn clean install -Prun to run the full platform embedded in Jetty/H2
|
||||||
|
---
|
||||||
|
|
||||||
|
---
|
||||||
|
ALFRESCO AMP ARCHETYPE
|
||||||
|
---
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
--- oOo ---
|
||||||
|
|
||||||
|
*********
|
||||||
|
POM files
|
||||||
|
*********
|
||||||
|
|
||||||
|
-------------------------------
|
||||||
|
ALFRESCO PLATFORM POM
|
||||||
|
-------------------------------
|
||||||
|
* Describes the Alfresco platform. Lives in the Alfresco SVN and gets deployed at every release.
|
||||||
|
* DependencyManagement for all Alfresco commonly used JAR/WAR/AMP artifacts
|
||||||
|
* IInherits alfresco-developer-parent POM
|
||||||
|
|
||||||
|
---
|
||||||
|
ALFRESCO DEVELOPER PARENT POM
|
||||||
|
---
|
||||||
|
* Alfresco Repository Log and storage cleaning
|
||||||
|
---
|
||||||
|
Activation: built-in
|
||||||
|
---
|
||||||
|
When mvn clean is invoked, all files produced by Maven runs must be removed; this is the list of
|
||||||
|
filesets inherited from alfresco-developer-parent:
|
||||||
|
* target/ (default behaviour)
|
||||||
|
* *.log
|
||||||
|
* ${alfresco.data.location}
|
||||||
|
---
|
||||||
|
Properties
|
||||||
|
---
|
||||||
|
<alfresco.data.location>alf_data_dev</alfresco.data.location>
|
||||||
|
---
|
||||||
|
|
||||||
|
---
|
||||||
|
* AMP overlay into an Alfresco (or Share) Extension
|
||||||
|
---
|
||||||
|
Activation: built-in
|
||||||
|
---
|
||||||
|
When your project (or sub-module) is a <packaging>war</packaging>, you can automatically include one or more
|
||||||
|
AMP files by defining the dependencies into the pom.xml, as follows:
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.mycompany</groupId>
|
||||||
|
<artifactId>amp-module</artifactId>
|
||||||
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
<type>amp</type>
|
||||||
|
</dependency>
|
||||||
|
The AMP files will be overlayed on top of your current WAR customizations, therefore
|
||||||
|
they can override the content of the original WAR.
|
||||||
|
---
|
||||||
|
|
||||||
|
---
|
||||||
|
* Multi-environment property filtering
|
||||||
|
---
|
||||||
|
Activation: exists src/main/properties
|
||||||
|
---
|
||||||
|
You can enable multi-environment property filtering by simply creating the
|
||||||
|
src/main/properties/${env}/${webapp.resource.filter} file with your property values;
|
||||||
|
all files included in src/main/resources and src/main/properties will be filtered
|
||||||
|
with your properties defined; in order to switch between environments,
|
||||||
|
simply attach -Denv=yourenv to your mvn commands.
|
||||||
|
---
|
||||||
|
Properties
|
||||||
|
---
|
||||||
|
<env>local</env>
|
||||||
|
<webapp.resource.filter>alfresco-global.properties</webapp.resource.filter>
|
||||||
|
<webapp.resource.build.folder>${project.build.outputDirectory}</webapp.resource.build.folder>
|
||||||
|
<webapp.name>${project.artifactId}</webapp.name>
|
||||||
|
---
|
||||||
|
|
||||||
|
---
|
||||||
|
* Jetty H2 configuration
|
||||||
|
---
|
||||||
|
Activation: exists jetty/jetty.xml
|
||||||
|
---
|
||||||
|
You can enable Jetty to run your application(s); by default Jetty will run all contexts
|
||||||
|
using jetty/jetty.xml as Jetty Server configuration, allowing to add the jndi resource
|
||||||
|
needed to start Alfresco Repository webapp; if you want to run multiple webapps - for
|
||||||
|
example share and alfresco - follow the example listed below:
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.mortbay.jetty</groupId>
|
||||||
|
<artifactId>maven-jetty-plugin</artifactId>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>run</id>
|
||||||
|
<goals><goal>run</goal></goals>
|
||||||
|
<phase>package</phase>
|
||||||
|
<configuration>
|
||||||
|
<contextPath>/</contextPath>
|
||||||
|
<webAppSourceDirectory>.</webAppSourceDirectory>
|
||||||
|
<webXml>jetty/root-web.xml</webXml>
|
||||||
|
<contextHandlers>
|
||||||
|
<contextHandler implementation="org.mortbay.jetty.webapp.WebAppContext">
|
||||||
|
<war>${project.basedir}/../alfresco/target/alfresco.war</war>
|
||||||
|
<contextPath>/alfresco</contextPath>
|
||||||
|
</contextHandler>
|
||||||
|
<contextHandler implementation="org.mortbay.jetty.webapp.WebAppContext">
|
||||||
|
<war>${project.basedir}/../share/target/share.war</war>
|
||||||
|
<contextPath>/share</contextPath>
|
||||||
|
</contextHandler>
|
||||||
|
</contextHandlers>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
---
|
42
alfresco-lifecycle-aggregator/TODO.txt
Normal file
42
alfresco-lifecycle-aggregator/TODO.txt
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
Short term (pre 4.x release):
|
||||||
|
-----------------------------
|
||||||
|
- Generate archetypes for sample projects
|
||||||
|
- Cleanup issues
|
||||||
|
- Release
|
||||||
|
- Testing against 1 Community and 1 Enterprise version
|
||||||
|
- Documentation, documentation, documentation
|
||||||
|
- Maven Site
|
||||||
|
- https://wiki.alfresco.com/index.php?title=Maven_Alfresco_SDK (from scratch)
|
||||||
|
- http://code.google.com/p/maven-alfresco-archetypes/
|
||||||
|
|
||||||
|
Mid term (post 4.x release):
|
||||||
|
----------------------------
|
||||||
|
- More archetypes
|
||||||
|
|
||||||
|
**************************************************
|
||||||
|
Enterprise Supported Archetypes (aka Advanced Use)
|
||||||
|
**************************************************
|
||||||
|
|
||||||
|
If you have built integration projects with Alfresco, you're familiar with Maven and you have a case study in mind,
|
||||||
|
wondering how to integrate it with your software development around the product, you can start from the Alfresco
|
||||||
|
Enterprise archetype suite:
|
||||||
|
|
||||||
|
1.
|
||||||
|
mvn archetype:generate \
|
||||||
|
-DarchetypeGroupId=org.alfresco.enterprise \
|
||||||
|
-DarchetypeArtifactId=supported-alfresco-archetype \
|
||||||
|
-DarchetypeVersion=1.0 \
|
||||||
|
-DgroupId=com.someco \
|
||||||
|
-DartifactId=alfresco-enterprise \
|
||||||
|
-Dversion=1.0-SNAPSHOT \
|
||||||
|
-DarchetypeRepository=http://maven.alfresco.com/nexus/content/repositories/releases \
|
||||||
|
-DinteractiveMode=false
|
||||||
|
|
||||||
|
2.
|
||||||
|
cd alfresco-enterprise && MAVEN_OPTS="-Xms256m -Xmx1G -XX:PermSize=300m" mvn package -Drun
|
||||||
|
|
||||||
|
Run the following command if you want to have a list of the available archetypes:
|
||||||
|
|
||||||
|
mvn archetype:generate \
|
||||||
|
-DarchetypeCatalog=http://maven.alfresco.com/nexus/content/repositories/releases/archetype-catalog.xml
|
||||||
|
|
@@ -0,0 +1,18 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
<groupId>org.alfresco.maven.archetype</groupId>
|
||||||
|
<artifactId>alfresco-allinone-archetype</artifactId>
|
||||||
|
<packaging>maven-archetype</packaging>
|
||||||
|
<name>alfresco-allinone-archetype</name>
|
||||||
|
<description>Sample multi-module project for All-in-One development on the Alfresco plaftorm. Includes modules for: Repository, AMP, Share, Solr and embedded Jetty run</description>
|
||||||
|
|
||||||
|
<parent>
|
||||||
|
<groupId>org.alfresco.maven</groupId>
|
||||||
|
<artifactId>alfresco-lifecycle-aggregator</artifactId>
|
||||||
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
<relativePath>../../pom.xml</relativePath>
|
||||||
|
</parent>
|
||||||
|
|
||||||
|
</project>
|
@@ -0,0 +1,154 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<archetype-descriptor xsi:schemaLocation="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0 http://maven.apache.org/xsd/archetype-descriptor-1.0.0.xsd" name="quickstart-allinone-archetype"
|
||||||
|
xmlns="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||||
|
<requiredProperties>
|
||||||
|
<requiredProperty key="version">
|
||||||
|
<defaultValue>1.0-SNAPSHOT</defaultValue>
|
||||||
|
</requiredProperty>
|
||||||
|
<requiredProperty key="alfresco_target_groupId">
|
||||||
|
<defaultValue>org.alfresco</defaultValue>
|
||||||
|
</requiredProperty>
|
||||||
|
<requiredProperty key="alfresco_target_version">
|
||||||
|
<defaultValue>4.2.b</defaultValue>
|
||||||
|
</requiredProperty>
|
||||||
|
<requiredProperty key="package">
|
||||||
|
<defaultValue>(not used)</defaultValue>
|
||||||
|
</requiredProperty>
|
||||||
|
</requiredProperties>
|
||||||
|
<modules>
|
||||||
|
<module id="amp" dir="amp" name="amp">
|
||||||
|
<fileSets>
|
||||||
|
<fileSet filtered="false" packaged="false" encoding="UTF-8">
|
||||||
|
<directory>src/main/java</directory>
|
||||||
|
<includes>
|
||||||
|
<include>**/*.java</include>
|
||||||
|
</includes>
|
||||||
|
</fileSet>
|
||||||
|
<fileSet encoding="UTF-8" filtered="false">
|
||||||
|
<directory>src/main/amp</directory>
|
||||||
|
<includes>
|
||||||
|
<include>**</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>
|
||||||
|
<fileSet encoding="UTF-8" filtered="false">
|
||||||
|
<directory>jetty</directory>
|
||||||
|
<includes>
|
||||||
|
<include>**</include>
|
||||||
|
</includes>
|
||||||
|
</fileSet>
|
||||||
|
</fileSets>
|
||||||
|
</module>
|
||||||
|
<module id="alfresco" dir="alfresco" name="alfresco">
|
||||||
|
<fileSets>
|
||||||
|
<fileSet encoding="UTF-8" filtered="false">
|
||||||
|
<directory>src/main/webapp</directory>
|
||||||
|
<includes>
|
||||||
|
<include>**</include>
|
||||||
|
</includes>
|
||||||
|
</fileSet>
|
||||||
|
<fileSet encoding="UTF-8" filtered="false">
|
||||||
|
<directory>src/main/properties</directory>
|
||||||
|
<includes>
|
||||||
|
<include>**/*.properties</include>
|
||||||
|
</includes>
|
||||||
|
</fileSet>
|
||||||
|
<fileSet encoding="UTF-8" filtered="false">
|
||||||
|
<directory>src/main/resources</directory>
|
||||||
|
<includes>
|
||||||
|
<include>**</include>
|
||||||
|
</includes>
|
||||||
|
</fileSet>
|
||||||
|
</fileSets>
|
||||||
|
</module>
|
||||||
|
<module id="solr" dir="solr" name="solr" filtered="false">
|
||||||
|
<fileSets>
|
||||||
|
<fileSet encoding="UTF-8">
|
||||||
|
<directory>src/main/solr-properties</directory>
|
||||||
|
<includes>
|
||||||
|
<include>**</include>
|
||||||
|
<include>**</include>
|
||||||
|
</includes>
|
||||||
|
</fileSet>
|
||||||
|
<fileSet encoding="UTF-8" filtered="false">
|
||||||
|
<directory>src/main/webapp</directory>
|
||||||
|
<includes>
|
||||||
|
<include>**</include>
|
||||||
|
</includes>
|
||||||
|
</fileSet>
|
||||||
|
<fileSet encoding="UTF-8" filtered="false">
|
||||||
|
<directory>src/main/resources</directory>
|
||||||
|
<includes>
|
||||||
|
<include>**</include>
|
||||||
|
</includes>
|
||||||
|
</fileSet>
|
||||||
|
</fileSets>
|
||||||
|
</module>
|
||||||
|
<module id="share" dir="share" name="share" filtered="false">
|
||||||
|
<fileSets>
|
||||||
|
<fileSet encoding="UTF-8">
|
||||||
|
<directory>src/main/webapp</directory>
|
||||||
|
<includes>
|
||||||
|
<include>**</include>
|
||||||
|
</includes>
|
||||||
|
</fileSet>
|
||||||
|
<fileSet encoding="UTF-8">
|
||||||
|
<directory>src/main/properties</directory>
|
||||||
|
<includes>
|
||||||
|
<include>**/*.properties</include>
|
||||||
|
</includes>
|
||||||
|
</fileSet>
|
||||||
|
<fileSet encoding="UTF-8" filtered="false">
|
||||||
|
<directory>src/main/resources</directory>
|
||||||
|
<includes>
|
||||||
|
<include>**</include>
|
||||||
|
</includes>
|
||||||
|
</fileSet>
|
||||||
|
</fileSets>
|
||||||
|
</module>
|
||||||
|
<module id="wcmqs" dir="wcmqs" name="share" filtered="false">
|
||||||
|
<fileSets>
|
||||||
|
<fileSet encoding="UTF-8">
|
||||||
|
<directory>src/main/webapp</directory>
|
||||||
|
<includes>
|
||||||
|
<include>**</include>
|
||||||
|
</includes>
|
||||||
|
</fileSet>
|
||||||
|
<fileSet encoding="UTF-8" filtered="false">
|
||||||
|
<directory>src/main/resources</directory>
|
||||||
|
<includes>
|
||||||
|
<include>**</include>
|
||||||
|
</includes>
|
||||||
|
</fileSet>
|
||||||
|
<fileSet encoding="UTF-8" filtered="false">
|
||||||
|
<directory>src/main/webapp</directory>
|
||||||
|
<includes>
|
||||||
|
<include>**</include>
|
||||||
|
</includes>
|
||||||
|
</fileSet>
|
||||||
|
</fileSets>
|
||||||
|
</module>
|
||||||
|
<module id="runner" dir="runner" name="runner" filtered="false">
|
||||||
|
<fileSets>
|
||||||
|
<fileSet encoding="UTF-8">
|
||||||
|
<directory>jetty</directory>
|
||||||
|
<includes>
|
||||||
|
<include>**</include>
|
||||||
|
</includes>
|
||||||
|
</fileSet>
|
||||||
|
</fileSets>
|
||||||
|
</module>
|
||||||
|
</modules>
|
||||||
|
</archetype-descriptor>
|
@@ -0,0 +1,128 @@
|
|||||||
|
*************
|
||||||
|
Prerequisites
|
||||||
|
*************
|
||||||
|
|
||||||
|
- The only prerequisite to follow reading this document is to have Apache Maven 3.0.3+ (or higher) installed
|
||||||
|
on your machine; there is no preferred IDE nor web container and database requirements needed.
|
||||||
|
|
||||||
|
- It is strongly advised to use the Apache Maven official binary distributions downloaded from maven.apache.org; avoid
|
||||||
|
OS-specific distributions as much as possible.
|
||||||
|
|
||||||
|
- add MAVEN_OPTS="-Xms256m -Xmx1G -XX:PermSize=300m" to your environment if your plan to launch tests / run embedded in Jetty
|
||||||
|
|
||||||
|
*****
|
||||||
|
Usage
|
||||||
|
*****
|
||||||
|
This multi-module project manages an All-in-One Alfresco project and it's composed by the following modules:
|
||||||
|
- amp --> An Repository Tier AMP project, demonstrating sample project structure and demo component loading. Can be configured to work for Share
|
||||||
|
- alfresco --> An alfresco.war Repository Extension, overlaying the Alfresco WAR with custom resources / classes and depending on the 'amp' project
|
||||||
|
- share --> A share.war extension, overlaying the Share WAR with custom resoruces / classes
|
||||||
|
- solr --> A solr.zip overlay / customization to configure solr cores properties
|
||||||
|
|
||||||
|
The project provides support for typical development lifecycle use cases like:
|
||||||
|
- packaging
|
||||||
|
- testing
|
||||||
|
- run embedded
|
||||||
|
- integration testing
|
||||||
|
- release and distribution
|
||||||
|
|
||||||
|
of your Alfresco (and platform components) related artifacts. The AMPs produced with this project are fully compatible with Alfresco MMT,
|
||||||
|
in fact the Alfresco Maven plugin - used to manage AMPs in this SDK - embeds the official Alfresco MMT to install depended AMPs.
|
||||||
|
|
||||||
|
Project layout:
|
||||||
|
--------------
|
||||||
|
parent-project
|
||||||
|
|-> amp
|
||||||
|
|-> alfresco
|
||||||
|
|-> share
|
||||||
|
|-> solr
|
||||||
|
|-> wcmqs (Alfresco Web Quick Start)
|
||||||
|
|-> runner (a Jetty embedded runner / integration test runner)
|
||||||
|
|
||||||
|
Useful commands
|
||||||
|
---------------
|
||||||
|
Running from parent project:
|
||||||
|
- mvn package --> Runs unit tests (if present) and packages all modules in their respective target/
|
||||||
|
- mvn install --> Runs unit tests (if present) , packages and installs AMP in local Maven repository
|
||||||
|
- mvn install -Dmaven.test.skip=true --> Packages and installs AMP in local Maven repository, skipping tests
|
||||||
|
- mvn integration-test -Prun --> Runs unit tests and packages all modules and the runner project runs Alfresco, Share and Solr in Jetty + H2
|
||||||
|
- mvn clean -Ppurge --> Removes DB, alf_data and log files
|
||||||
|
|
||||||
|
Running from runner:
|
||||||
|
- 'mvn jetty:run -Prun' or 'mvn integration-test -Prun' to quickly run already packaged webapps
|
||||||
|
|
||||||
|
Properties management
|
||||||
|
---------------------
|
||||||
|
Properties are configurable at 2 levels:
|
||||||
|
- POM properties (in the parent POM or at single module level)
|
||||||
|
- direclty in each modules *.properties files, particularly
|
||||||
|
- src/main/properties/<env>/alfresco-global.properties (environment dependent properties for Alfresco WARs)
|
||||||
|
|
||||||
|
Useful properties that can be fully controlled directly in the POM are:
|
||||||
|
|
||||||
|
alfresco.data.location (default = alf_data_dev)
|
||||||
|
alfresco.db.name (default = alf_dev)
|
||||||
|
app.log.dir (default = target/)
|
||||||
|
app.log.root.level (default = INFO)
|
||||||
|
|
||||||
|
***************************
|
||||||
|
Maven Alfresco SDK Overview
|
||||||
|
***************************
|
||||||
|
|
||||||
|
The Maven Alfresco SDK is an effort that have been developing in the last 5 years - mostly driven by community efforts on
|
||||||
|
Google Code (http://code.google.com/p/maven-alfresco-archetypes) - which delivers archetypes for building Alfresco
|
||||||
|
integration project with Maven; builds are based on Alfresco Community and Enterprise artifacts released on the
|
||||||
|
Alfresco Artifacts Repository at https://artifacts.alfresco.com
|
||||||
|
|
||||||
|
The Maven Alfresco SDK is full rewriting of the Maven Alfresco Lifecyle (latest version 3.9.1) and it's composed of 3 efforts:
|
||||||
|
|
||||||
|
a) POM files:
|
||||||
|
- alfresco-sdk-parent: provides lifecycle features and behaviors for typical Alfresco development projects
|
||||||
|
- alfresco-platform-distribution: describes and provides dependencyManagement for artifacts of each Alfresco release
|
||||||
|
|
||||||
|
b) alfresco-maven-plugin:
|
||||||
|
- defines the AMP packaging type and lifecycle in Maven
|
||||||
|
- emdeds Alfresco MMT to provide safe installation of single / multiple AMP -> WAR
|
||||||
|
- will potentially grow including more use cases around Alfresco / Maven
|
||||||
|
|
||||||
|
c) The definition of (initially 2) archetypes that show some simple project's configuration using
|
||||||
|
the parent POMs
|
||||||
|
- AMP archetype (this archetype)
|
||||||
|
- All-in-One multi-module archetype including
|
||||||
|
- Alfresco Repository AMP
|
||||||
|
- Alfresco Repository extension project (WAR, also depending on the AMP)
|
||||||
|
- Share customization project (WAR)
|
||||||
|
- Solr customization project (WAR)
|
||||||
|
- Jetty embedded runner for the full platform (mvn clean install -Prun)
|
||||||
|
|
||||||
|
|
||||||
|
****************************************
|
||||||
|
Why using this SDK might be a good idea?
|
||||||
|
****************************************
|
||||||
|
The main reported advantages of using the Maven Alfresco SDK are:
|
||||||
|
|
||||||
|
- IDE-independent SDK, all build-related features are provided by Apache Maven, which is the only
|
||||||
|
prerequisite to use this SDK
|
||||||
|
|
||||||
|
- No IDE manual configuration, all modern IDEs offer advanced Maven integrations, so
|
||||||
|
feel free to use Eclipse, IntelliJ, or any other IDE to write your code and leverage Maven
|
||||||
|
|
||||||
|
- Process ready: scales from quick start rapid application development, to be seamlessly
|
||||||
|
integrated in enterprise devleopment processes like Continuous Integration and Release
|
||||||
|
|
||||||
|
- Language independent, you don't like Maven? You can still use Ant, Ivy, Buildr, Gradle, Leiningen or any other build
|
||||||
|
system that is compatible with Maven artifact resolution mechanism; just configure artifacts.alfresco.com as (one of) your
|
||||||
|
Maven repositories and you're ready to go
|
||||||
|
|
||||||
|
- Javadoc and Sources support, provided by artifacts.alfresco.com related Maven artifacts; you don't need to manually
|
||||||
|
configure your IDE to attach (manually downloaded) sources to your (manually downloaded) binaries.
|
||||||
|
|
||||||
|
- Clean and readable, the build logic related with OOTB Alfresco features is wrapped in 50 lines of pom.xml
|
||||||
|
|
||||||
|
- Advanced build functionality, inherited by your parent POMs you can use embedded databases and j2ee
|
||||||
|
containers with (almost) no configuration at all, among other features exposed below.
|
||||||
|
|
||||||
|
- One mvn command to generate, one mvn command to run embedded, this is all you need to do to have a local Alfresco running
|
||||||
|
on an empty laptop
|
||||||
|
|
||||||
|
- Supports community and enterprise flawlessly, allowing to switch one to another very easily
|
@@ -0,0 +1,87 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!-- 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. -->
|
||||||
|
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<artifactId>${artifactId}</artifactId>
|
||||||
|
<name>Alfresco Repository and Explorer Client</name>
|
||||||
|
<packaging>war</packaging>
|
||||||
|
<description>Alfresco Repository and Explorer Client</description>
|
||||||
|
|
||||||
|
<parent>
|
||||||
|
<groupId>${groupId}</groupId>
|
||||||
|
<artifactId>${rootArtifactId}</artifactId>
|
||||||
|
<version>${version}</version>
|
||||||
|
</parent>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>${alfresco.groupId}</groupId>
|
||||||
|
<artifactId>alfresco</artifactId>
|
||||||
|
<type>war</type>
|
||||||
|
</dependency>
|
||||||
|
<!-- Demonstrating the dependency on the AMP developed in the 'amp' project -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>${project.groupId}</groupId>
|
||||||
|
<artifactId>amp</artifactId>
|
||||||
|
<version>${project.version}</version>
|
||||||
|
<type>amp</type>
|
||||||
|
</dependency>
|
||||||
|
<!-- Demonstrating the usage of a well known GA AMP (Web Quick Start Repository component) -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>${alfresco.groupId}</groupId>
|
||||||
|
<artifactId>alfresco-wcm-quickstart-repo</artifactId>
|
||||||
|
<version>${alfresco.version}</version>
|
||||||
|
<type>amp</type>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<artifactId>maven-war-plugin</artifactId>
|
||||||
|
<configuration>
|
||||||
|
<!-- Here is can control the order of overlay of your (WAR, AMP, etc.) dependencies
|
||||||
|
| NOTE: At least one WAR dependency must be uncompressed first
|
||||||
|
| NOTE: In order to have a dependency effectively added to the WAR you need to
|
||||||
|
| explicitly mention it in the overlay section.
|
||||||
|
| NOTE: First-win resource strategy is used by the WAR plugin
|
||||||
|
-->
|
||||||
|
<overlays>
|
||||||
|
<!-- Current project customizations -->
|
||||||
|
<overlay/>
|
||||||
|
<!-- The Alfresco WAR -->
|
||||||
|
<overlay>
|
||||||
|
<groupId>${alfresco.groupId}</groupId>
|
||||||
|
<artifactId>alfresco</artifactId>
|
||||||
|
<type>war</type>
|
||||||
|
<!-- To allow inclusion of META-INF -->
|
||||||
|
<excludes/>
|
||||||
|
</overlay>
|
||||||
|
<!-- Add / order your AMPs here -->
|
||||||
|
<overlay>
|
||||||
|
<groupId>${project.groupId}</groupId>
|
||||||
|
<artifactId>amp</artifactId>
|
||||||
|
<type>amp</type>
|
||||||
|
</overlay>
|
||||||
|
<overlay>
|
||||||
|
<groupId>${alfresco.groupId}</groupId>
|
||||||
|
<artifactId>alfresco-wcm-quickstart-repo</artifactId>
|
||||||
|
<type>amp</type>
|
||||||
|
</overlay>
|
||||||
|
</overlays>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
</project>
|
@@ -0,0 +1,308 @@
|
|||||||
|
# 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
|
||||||
|
# -------------------
|
||||||
|
|
||||||
|
# Sample custom content and index data location
|
||||||
|
# This will create alf_data Relative to appserver run folder
|
||||||
|
# In this default file we take the property from the POM (for compatbility with local jetty and jboss deployments) but it can also be edited here.
|
||||||
|
|
||||||
|
###############################
|
||||||
|
## Common Alfresco Properties #
|
||||||
|
###############################
|
||||||
|
|
||||||
|
|
||||||
|
dir.root=${alfresco.data.location}
|
||||||
|
# Allowed values are: NONE, AUTO, FULL
|
||||||
|
index.recovery.mode=FULL
|
||||||
|
|
||||||
|
index.subsystem.name=solr
|
||||||
|
solr.host=localhost
|
||||||
|
solr.port=8080
|
||||||
|
solr.secureComms=none
|
||||||
|
# Setting Solr backup for the future. Tweak this if needed (ideally in other env properties files)
|
||||||
|
solr.backup.alfresco.cronExpression=0 30 2 * * ? 2050
|
||||||
|
solr.backup.archive.cronExpression=0 30 3 * * ? 2050
|
||||||
|
solr.backup.alfresco.remoteBackupLocation=${dir.root}/solrBackup/alfresco
|
||||||
|
solr.backup.archive.remoteBackupLocation=${dir.root}/solrBackup/archive
|
||||||
|
# We are in the local DEV properties file, no need for Solr backup
|
||||||
|
solr.backup.alfresco.numberToKeep=0
|
||||||
|
solr.backup.archive.numberToKeep=0
|
||||||
|
|
||||||
|
# These jobs seem to require Lucene (Unsupported Operation with Solr) so we disasble 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
|
||||||
|
|
||||||
|
# database connection properties
|
||||||
|
# MySQL connection (This is default and requires mysql-connector-java-5.0.3-bin.jar, which ships with the Alfresco server)
|
||||||
|
|
||||||
|
db.driver=${alfresco.db.datasource.class}
|
||||||
|
db.url=${alfresco.db.url}
|
||||||
|
db.username=${alfresco.db.username}
|
||||||
|
db.password=${alfresco.db.password}
|
||||||
|
db.pool.initial=10
|
||||||
|
db.pool.max=100
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Sample custom content and index data location
|
||||||
|
#
|
||||||
|
#dir.root=/srv/alfresco/alf_data
|
||||||
|
#dir.keystore=${dir.root}/keystore
|
||||||
|
|
||||||
|
#
|
||||||
|
# Sample database connection properties
|
||||||
|
#
|
||||||
|
#db.username=alfresco
|
||||||
|
#db.password=alfresco
|
||||||
|
|
||||||
|
#
|
||||||
|
# External locations
|
||||||
|
#-------------
|
||||||
|
#ooo.exe=soffice
|
||||||
|
#ooo.enabled=false
|
||||||
|
#jodconverter.officeHome=./OpenOffice.org
|
||||||
|
#jodconverter.portNumbers=8101
|
||||||
|
#jodconverter.enabled=true
|
||||||
|
#img.root=./ImageMagick
|
||||||
|
#swf.exe=./bin/pdf2swf
|
||||||
|
|
||||||
|
#
|
||||||
|
# Property to control whether schema updates are performed automatically.
|
||||||
|
# Updates must be enabled during upgrades as, apart from the static upgrade scripts,
|
||||||
|
# there are also auto-generated update scripts that will need to be executed. After
|
||||||
|
# upgrading to a new version, this can be disabled.
|
||||||
|
#
|
||||||
|
#db.schema.update=true
|
||||||
|
|
||||||
|
#
|
||||||
|
# MySQL connection
|
||||||
|
#
|
||||||
|
#db.driver=org.gjt.mm.mysql.Driver
|
||||||
|
#db.url=jdbc:mysql://localhost/alfresco?useUnicode=yes&characterEncoding=UTF-8
|
||||||
|
|
||||||
|
#
|
||||||
|
# Oracle connection
|
||||||
|
#
|
||||||
|
#db.driver=oracle.jdbc.OracleDriver
|
||||||
|
#db.url=jdbc:oracle:thin:@localhost:1521:alfresco
|
||||||
|
|
||||||
|
#
|
||||||
|
# SQLServer connection
|
||||||
|
# Requires jTDS driver version 1.2.5 and SNAPSHOT isolation mode
|
||||||
|
# Enable TCP protocol on fixed port 1433
|
||||||
|
# Prepare the database with:
|
||||||
|
# ALTER DATABASE alfresco SET ALLOW_SNAPSHOT_ISOLATION ON;
|
||||||
|
#
|
||||||
|
#db.driver=net.sourceforge.jtds.jdbc.Driver
|
||||||
|
#db.url=jdbc:jtds:sqlserver://localhost:1433/alfresco
|
||||||
|
#db.txn.isolation=4096
|
||||||
|
|
||||||
|
#
|
||||||
|
# PostgreSQL connection (requires postgresql-8.2-504.jdbc3.jar or equivalent)
|
||||||
|
#
|
||||||
|
#db.driver=org.postgresql.Driver
|
||||||
|
#db.url=jdbc:postgresql://localhost:5432/alfresco
|
||||||
|
|
||||||
|
#
|
||||||
|
# DB2 connection
|
||||||
|
#
|
||||||
|
#db.driver=com.ibm.db2.jcc.DB2Driver
|
||||||
|
#db.url=jdbc:db2://localhost:50000/alfresco:retrieveMessagesFromServerOnGetMessage=true;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Index Recovery Mode
|
||||||
|
#-------------
|
||||||
|
#index.recovery.mode=AUTO
|
||||||
|
|
||||||
|
#
|
||||||
|
# Outbound Email Configuration
|
||||||
|
#-------------
|
||||||
|
#mail.host=
|
||||||
|
#mail.port=25
|
||||||
|
#mail.username=anonymous
|
||||||
|
#mail.password=
|
||||||
|
#mail.encoding=UTF-8
|
||||||
|
#mail.from.default=alfresco@alfresco.org
|
||||||
|
#mail.smtp.auth=false
|
||||||
|
|
||||||
|
#
|
||||||
|
# Alfresco Email Service and Email Server
|
||||||
|
#-------------
|
||||||
|
|
||||||
|
# Enable/Disable the inbound email service. The service could be used by processes other than
|
||||||
|
# the Email Server (e.g. direct RMI access) so this flag is independent of the Email Service.
|
||||||
|
#-------------
|
||||||
|
#email.inbound.enabled=true
|
||||||
|
|
||||||
|
# Email Server properties
|
||||||
|
#-------------
|
||||||
|
#email.server.enabled=true
|
||||||
|
#email.server.port=25
|
||||||
|
#email.server.domain=alfresco.com
|
||||||
|
#email.inbound.unknownUser=anonymous
|
||||||
|
|
||||||
|
# A comma separated list of email REGEX patterns of allowed senders.
|
||||||
|
# If there are any values in the list then all sender email addresses
|
||||||
|
# must match. For example:
|
||||||
|
# .*\@alfresco\.com, .*\@alfresco\.org
|
||||||
|
# Allow anyone:
|
||||||
|
#-------------
|
||||||
|
#email.server.allowed.senders=.*
|
||||||
|
|
||||||
|
#
|
||||||
|
# The default authentication chain
|
||||||
|
# To configure external authentication subsystems see:
|
||||||
|
# http://wiki.alfresco.com/wiki/Alfresco_Authentication_Subsystems
|
||||||
|
#-------------
|
||||||
|
#authentication.chain=alfrescoNtlm1:alfrescoNtlm
|
||||||
|
|
||||||
|
#
|
||||||
|
# URL Generation Parameters (The ${localname} token is replaced by the local server name)
|
||||||
|
#-------------
|
||||||
|
#alfresco.context=alfresco
|
||||||
|
#alfresco.host=${localname}
|
||||||
|
#alfresco.port=8080
|
||||||
|
#alfresco.protocol=http
|
||||||
|
#
|
||||||
|
#share.context=share
|
||||||
|
#share.host=${localname}
|
||||||
|
#share.port=8080
|
||||||
|
#share.protocol=http
|
||||||
|
|
||||||
|
#imap.server.enabled=true
|
||||||
|
#imap.server.port=143
|
||||||
|
#imap.server.host=localhost
|
||||||
|
|
||||||
|
# Default value of alfresco.rmi.services.host is 0.0.0.0 which means 'listen on all adapters'.
|
||||||
|
# This allows connections to JMX both remotely and locally.
|
||||||
|
#
|
||||||
|
alfresco.rmi.services.host=0.0.0.0
|
||||||
|
|
||||||
|
#
|
||||||
|
# RMI service ports for the individual services.
|
||||||
|
# These seven services are available remotely.
|
||||||
|
#
|
||||||
|
# Assign individual ports for each service for best performance
|
||||||
|
# or run several services on the same port. You can even run everything on 50500 if needed.
|
||||||
|
#
|
||||||
|
# Select 0 to use a random unused port.
|
||||||
|
#
|
||||||
|
#avm.rmi.service.port=50501
|
||||||
|
#avmsync.rmi.service.port=50502
|
||||||
|
#attribute.rmi.service.port=50503
|
||||||
|
#authentication.rmi.service.port=50504
|
||||||
|
#repo.rmi.service.port=50505
|
||||||
|
#action.rmi.service.port=50506
|
||||||
|
#wcm-deployment-receiver.rmi.service.port=50507
|
||||||
|
#monitor.rmi.service.port=50508
|
||||||
|
|
||||||
|
|
||||||
|
# Dialect is autodetected starting from 3.2
|
||||||
|
# H2 dialect
|
||||||
|
#hibernate.dialect=org.hibernate.dialect.H2Dialect
|
||||||
|
|
||||||
|
|
||||||
|
# Property to control whether schema updates are performed automatically.
|
||||||
|
# Updates must be enabled during upgrades as, apart from the static upgrade scripts,
|
||||||
|
# there are also auto-generated update scripts that will need to be executed. After
|
||||||
|
# upgrading to a new version, this can be disabled.
|
||||||
|
#db.schema.update=true
|
||||||
|
|
||||||
|
|
||||||
|
# File servers related properties
|
||||||
|
# For local builds we disable CIFS and FTP. Edit the following property to reenable them
|
||||||
|
smb.server.enabled=false
|
||||||
|
smb.server.name=CFS_SHARE_LOCAL
|
||||||
|
smb.server.domain=mycompany.com
|
||||||
|
smb.server.bindto=127.0.0.1
|
||||||
|
smb.tcpip.port=1445
|
||||||
|
netbios.session.port=1139
|
||||||
|
netbios.name.port=1137
|
||||||
|
netbios.datagram.port=1138
|
||||||
|
ftp.server.enabled=false
|
||||||
|
ftp.port=1121
|
||||||
|
ftp.authenticator=alfresco
|
||||||
|
|
||||||
|
# This properties file is used to configure LDAP authentication
|
||||||
|
# NB: The following LDAP related properties are read only in case -Denteprise mvn build property is specified
|
||||||
|
# Wheter to allow silent deletion of users in the Alfresco UI (note: users will be then resynced in the next synchronization)
|
||||||
|
ldap.authentication.allowDeleteUser=true
|
||||||
|
# LDAP JNDI provider
|
||||||
|
ldap.authentication.provider=com.sun.jndi.ldap.LdapCtxFactory
|
||||||
|
# Url and protocol for LDAP server to carry authentication against
|
||||||
|
ldap.authentication.url=ldap://ldap.mycompany.com:636
|
||||||
|
# can be (simple, ssl)
|
||||||
|
ldap.authentication.protcol=ssl
|
||||||
|
# Credentials with full access to the directoty used
|
||||||
|
ldap.authentication.adminUser=ou=Admin,ou=Services,o=Company
|
||||||
|
ldap.authentication.adminPassword=secret
|
||||||
|
# Wheter to allow unauthenticated guest a read only login
|
||||||
|
ldap.authentication.guestLogin.allowed=false
|
||||||
|
# Wheter users can be created on the fly upon successful external (e.g. LDAP) authentication. Useful to avoid user synchronization in case just uid and pwd are needed for a user
|
||||||
|
server.transaction.allow-writes=true
|
||||||
|
# Wheter user names are case sensitive
|
||||||
|
user.name.caseSensitive=true
|
||||||
|
# Wheter the synchronization process has to process duplicated users (e.g. synced users and users coming from the sync)
|
||||||
|
personService.processDuplicates=true
|
||||||
|
# Which action to take when processin duplicates. One of: LEAVE, SPLIT, DELETE
|
||||||
|
personService.duplicateMode=DELETE
|
||||||
|
# Which of the users (in case of SPLIT duplicates policy) should be considered valid
|
||||||
|
personService.lastIsBest=true
|
||||||
|
# Wheter auto created users should be considered when processing duplicates
|
||||||
|
personService.includeAutoCreated=true
|
||||||
|
# The query to find the people to import
|
||||||
|
ldap.synchronisation.personQuery=(objectclass=inetOrgPerson)
|
||||||
|
# The search base of the query to find people to import
|
||||||
|
ldap.synchronisation.personSearchBase=ou=Identities,ou=mycompany,o=com
|
||||||
|
# The attribute name on people objects found in LDAP to use as the uid in Alfresco
|
||||||
|
ldap.synchronisation.userIdAttributeName=cn
|
||||||
|
# The attribute on person objects in LDAP to map to the first name property in Alfresco
|
||||||
|
ldap.synchronisation.userFirstNameAttributeName=givenName
|
||||||
|
# The attribute on person objects in LDAP to map to the last name property in Alfresco
|
||||||
|
ldap.synchronisation.userLastNameAttributeName=sn
|
||||||
|
# The attribute on person objects in LDAP to map to the email property in Alfresco
|
||||||
|
ldap.synchronisation.userEmailAttributeName=cn
|
||||||
|
# The attribute on person objects in LDAP to map to the organizational id property in Alfresco
|
||||||
|
ldap.synchronisation.userOrganizationalIdAttributeName=maildomain
|
||||||
|
# The default home folder provider to use for people created via LDAP import
|
||||||
|
ldap.synchronisation.defaultHomeFolderProvider=companyHomeFolderProvider
|
||||||
|
# The query to find group objects
|
||||||
|
ldap.synchronisation.groupQuery=(objectclass=AlfrescoGroup)
|
||||||
|
# The search base to use to find group objects
|
||||||
|
ldap.synchronisation.groupSearchBase=ou=AlfrescoGroups,ou=mycompany,o=com
|
||||||
|
# The attribute on LDAP group objects to map to the gid property in Alfrecso
|
||||||
|
ldap.synchronisation.groupIdAttributeName=cn
|
||||||
|
# The group type in LDAP
|
||||||
|
ldap.synchronisation.groupType=AlfrescoGroup
|
||||||
|
# The person type in LDAP
|
||||||
|
ldap.synchronisation.personType=inetOrgPerson
|
||||||
|
# The attribute in LDAP on group objects that defines the DN for its members
|
||||||
|
ldap.synchronisation.groupMemberAttributeName=member
|
||||||
|
# The cron expression defining when people imports should take place (e.g. every evening at 22:00 hours)
|
||||||
|
ldap.synchronisation.import.person.cron=0 0 22 * * ?
|
||||||
|
# The cron expression defining when group imports should take place (e.g. every evening at 21:45 hours)
|
||||||
|
ldap.synchronisation.import.group.cron=0 45 21 * * ?
|
||||||
|
# Should all groups be cleared out at import time?
|
||||||
|
# - this is safe as groups are not used in Alfresco for other things (unlike person objects which you should never clear out during an import)
|
||||||
|
# - setting this to true means old group definitions will be tidied up.
|
||||||
|
ldap.synchronisation.import.group.clearAllChildren=false
|
||||||
|
|
@@ -0,0 +1,2 @@
|
|||||||
|
# You can add here custom log4j classes. This will be merged with the main log4j.properties
|
||||||
|
# See http://wiki.alfresco.com/wiki/Developing_an_Alfresco_Module#Best_Log4j_Configuration_Practices
|
@@ -0,0 +1,265 @@
|
|||||||
|
# This is a full override of Alfresco 4.2.b log4j.properties
|
||||||
|
# This file overwrites the alfresco.war log4j.properties
|
||||||
|
|
||||||
|
# Set root logger level to error
|
||||||
|
log4j.rootLogger=${app.log.root.level}, Console, File
|
||||||
|
|
||||||
|
###### Console appender definition #######
|
||||||
|
|
||||||
|
# All outputs currently set to be a ConsoleAppender.
|
||||||
|
log4j.appender.Console=org.apache.log4j.ConsoleAppender
|
||||||
|
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
|
||||||
|
|
||||||
|
# use log4j NDC to replace %x with tenant domain / username
|
||||||
|
log4j.appender.Console.layout.ConversionPattern=%d{ISO8601} %x %-5p [%c{3}] [%t] %m%n
|
||||||
|
#log4j.appender.Console.layout.ConversionPattern=%d{ABSOLUTE} %-5p [%c] %m%n
|
||||||
|
|
||||||
|
###### File appender definition #######
|
||||||
|
log4j.appender.File=org.apache.log4j.DailyRollingFileAppender
|
||||||
|
log4j.appender.File.File=${app.log.dir}alfresco.log
|
||||||
|
log4j.appender.File.Append=true
|
||||||
|
log4j.appender.File.DatePattern='.'yyyy-MM-dd
|
||||||
|
log4j.appender.File.layout=org.apache.log4j.PatternLayout
|
||||||
|
log4j.appender.File.layout.ConversionPattern=%d{ABSOLUTE} %-5p [%c] %m%n
|
||||||
|
|
||||||
|
###### Hibernate specific appender definition #######
|
||||||
|
#log4j.appender.file=org.apache.log4j.FileAppender
|
||||||
|
#log4j.appender.file.File=hibernate.log
|
||||||
|
#log4j.appender.file.layout=org.apache.log4j.PatternLayout
|
||||||
|
#log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
|
||||||
|
|
||||||
|
###### Log level overrides #######
|
||||||
|
|
||||||
|
# Commented-in loggers will be exposed as JMX MBeans (refer to org.alfresco.repo.admin.Log4JHierarchyInit)
|
||||||
|
# Hence, generally useful loggers should be listed with at least ERROR level to allow simple runtime
|
||||||
|
# control of the level via a suitable JMX Console. Also, any other loggers can be added transiently via
|
||||||
|
# Log4j addLoggerMBean as long as the logger exists and has been loaded.
|
||||||
|
|
||||||
|
# Hibernate
|
||||||
|
log4j.logger.org.hibernate=error
|
||||||
|
log4j.logger.org.hibernate.util.JDBCExceptionReporter=fatal
|
||||||
|
log4j.logger.org.hibernate.event.def.AbstractFlushingEventListener=fatal
|
||||||
|
log4j.logger.org.hibernate.type=warn
|
||||||
|
log4j.logger.org.hibernate.cfg.SettingsFactory=warn
|
||||||
|
|
||||||
|
# Spring
|
||||||
|
log4j.logger.org.springframework=warn
|
||||||
|
# Turn off Spring remoting warnings that should really be info or debug.
|
||||||
|
log4j.logger.org.springframework.remoting.support=error
|
||||||
|
log4j.logger.org.springframework.util=error
|
||||||
|
|
||||||
|
# Axis/WSS4J
|
||||||
|
log4j.logger.org.apache.axis=info
|
||||||
|
log4j.logger.org.apache.ws=info
|
||||||
|
|
||||||
|
# CXF
|
||||||
|
log4j.logger.org.apache.cxf=error
|
||||||
|
|
||||||
|
# MyFaces
|
||||||
|
log4j.logger.org.apache.myfaces.util.DebugUtils=info
|
||||||
|
log4j.logger.org.apache.myfaces.el.VariableResolverImpl=error
|
||||||
|
log4j.logger.org.apache.myfaces.application.jsp.JspViewHandlerImpl=error
|
||||||
|
log4j.logger.org.apache.myfaces.taglib=error
|
||||||
|
|
||||||
|
# OpenOfficeConnection
|
||||||
|
log4j.logger.net.sf.jooreports.openoffice.connection=fatal
|
||||||
|
|
||||||
|
# log prepared statement cache activity ###
|
||||||
|
log4j.logger.org.hibernate.ps.PreparedStatementCache=info
|
||||||
|
|
||||||
|
# Alfresco
|
||||||
|
log4j.logger.org.alfresco=error
|
||||||
|
log4j.logger.org.alfresco.repo.admin=info
|
||||||
|
log4j.logger.org.alfresco.repo.cache.TransactionalCache=warn
|
||||||
|
log4j.logger.org.alfresco.repo.model.filefolder=warn
|
||||||
|
log4j.logger.org.alfresco.repo.tenant=info
|
||||||
|
log4j.logger.org.alfresco.repo.avm=info
|
||||||
|
log4j.logger.org.alfresco.config=warn
|
||||||
|
log4j.logger.org.alfresco.config.JndiObjectFactoryBean=warn
|
||||||
|
log4j.logger.org.alfresco.config.JBossEnabledWebApplicationContext=warn
|
||||||
|
log4j.logger.org.alfresco.repo.management.subsystems=warn
|
||||||
|
log4j.logger.org.alfresco.repo.management.subsystems.ChildApplicationContextFactory=info
|
||||||
|
log4j.logger.org.alfresco.repo.management.subsystems.ChildApplicationContextFactory$ChildApplicationContext=warn
|
||||||
|
log4j.logger.org.alfresco.repo.security.sync=info
|
||||||
|
log4j.logger.org.alfresco.repo.security.person=info
|
||||||
|
|
||||||
|
log4j.logger.org.alfresco.sample=info
|
||||||
|
log4j.logger.org.alfresco.web=info
|
||||||
|
#log4j.logger.org.alfresco.web.app.AlfrescoNavigationHandler=debug
|
||||||
|
#log4j.logger.org.alfresco.web.ui.repo.component.UIActions=debug
|
||||||
|
#log4j.logger.org.alfresco.web.ui.repo.tag.PageTag=debug
|
||||||
|
#log4j.logger.org.alfresco.web.bean.clipboard=debug
|
||||||
|
log4j.logger.org.alfresco.repo.webservice=info
|
||||||
|
log4j.logger.org.alfresco.service.descriptor.DescriptorService=info
|
||||||
|
#log4j.logger.org.alfresco.web.page=debug
|
||||||
|
|
||||||
|
log4j.logger.org.alfresco.repo.importer.ImporterBootstrap=error
|
||||||
|
#log4j.logger.org.alfresco.repo.importer.ImporterBootstrap=info
|
||||||
|
|
||||||
|
log4j.logger.org.alfresco.web.ui.common.Utils=error
|
||||||
|
#log4j.logger.org.alfresco.web.ui.common.Utils=info
|
||||||
|
|
||||||
|
log4j.logger.org.alfresco.repo.admin.patch.PatchExecuter=info
|
||||||
|
log4j.logger.org.alfresco.repo.domain.patch.ibatis.PatchDAOImpl=info
|
||||||
|
|
||||||
|
# Specific patches
|
||||||
|
log4j.logger.org.alfresco.repo.admin.patch.impl.DeploymentMigrationPatch=info
|
||||||
|
log4j.logger.org.alfresco.repo.version.VersionMigrator=info
|
||||||
|
log4j.logger.org.alfresco.repo.admin.patch.impl.ResetWCMToGroupBasedPermissionsPatch=info
|
||||||
|
|
||||||
|
log4j.logger.org.alfresco.repo.module.ModuleServiceImpl=info
|
||||||
|
log4j.logger.org.alfresco.repo.domain.schema.SchemaBootstrap=info
|
||||||
|
log4j.logger.org.alfresco.repo.admin.ConfigurationChecker=info
|
||||||
|
log4j.logger.org.alfresco.repo.node.index.AbstractReindexComponent=warn
|
||||||
|
log4j.logger.org.alfresco.repo.node.index.IndexTransactionTracker=warn
|
||||||
|
log4j.logger.org.alfresco.repo.node.index.FullIndexRecoveryComponent=info
|
||||||
|
log4j.logger.org.alfresco.repo.node.index.AVMFullIndexRecoveryComponent=info
|
||||||
|
log4j.logger.org.alfresco.util.OpenOfficeConnectionTester=info
|
||||||
|
log4j.logger.org.alfresco.repo.node.db.hibernate.HibernateNodeDaoServiceImpl=warn
|
||||||
|
log4j.logger.org.alfresco.repo.domain.hibernate.DirtySessionMethodInterceptor=warn
|
||||||
|
log4j.logger.org.alfresco.repo.transaction.RetryingTransactionHelper=warn
|
||||||
|
log4j.logger.org.alfresco.util.transaction.SpringAwareUserTransaction.trace=warn
|
||||||
|
log4j.logger.org.alfresco.util.AbstractTriggerBean=warn
|
||||||
|
log4j.logger.org.alfresco.enterprise.repo.cache.cluster.KeepAliveHeartbeatReceiver=info
|
||||||
|
log4j.logger.org.alfresco.repo.version.Version2ServiceImpl=warn
|
||||||
|
|
||||||
|
#log4j.logger.org.alfresco.web.app.DebugPhaseListener=debug
|
||||||
|
|
||||||
|
log4j.logger.org.alfresco.repo.workflow=info
|
||||||
|
|
||||||
|
# CIFS server debugging
|
||||||
|
log4j.logger.org.alfresco.smb.protocol=error
|
||||||
|
#log4j.logger.org.alfresco.smb.protocol.auth=debug
|
||||||
|
#log4j.logger.org.alfresco.acegi=debug
|
||||||
|
|
||||||
|
# FTP server debugging
|
||||||
|
log4j.logger.org.alfresco.ftp.protocol=error
|
||||||
|
#log4j.logger.org.alfresco.ftp.server=debug
|
||||||
|
|
||||||
|
# WebDAV debugging
|
||||||
|
#log4j.logger.org.alfresco.webdav.protocol=debug
|
||||||
|
log4j.logger.org.alfresco.webdav.protocol=error
|
||||||
|
|
||||||
|
# NTLM servlet filters
|
||||||
|
#log4j.logger.org.alfresco.web.app.servlet.NTLMAuthenticationFilter=debug
|
||||||
|
#log4j.logger.org.alfresco.repo.webdav.auth.NTLMAuthenticationFilter=debug
|
||||||
|
|
||||||
|
# Kerberos servlet filters
|
||||||
|
#log4j.logger.org.alfresco.web.app.servlet.KerberosAuthenticationFilter=debug
|
||||||
|
#log4j.logger.org.alfresco.repo.webdav.auth.KerberosAuthenticationFilter=debug
|
||||||
|
|
||||||
|
# File servers
|
||||||
|
log4j.logger.org.alfresco.fileserver=warn
|
||||||
|
|
||||||
|
# Repo filesystem debug logging
|
||||||
|
#log4j.logger.org.alfresco.filesys.repo.ContentDiskDriver=debug
|
||||||
|
|
||||||
|
# AVM filesystem debug logging
|
||||||
|
#log4j.logger.org.alfresco.filesys.avm.AVMDiskDriver=debug
|
||||||
|
|
||||||
|
# Integrity message threshold - if 'failOnViolation' is off, then WARNINGS are generated
|
||||||
|
log4j.logger.org.alfresco.repo.node.integrity=ERROR
|
||||||
|
|
||||||
|
# Indexer debugging
|
||||||
|
log4j.logger.org.alfresco.repo.search.Indexer=error
|
||||||
|
#log4j.logger.org.alfresco.repo.search.Indexer=debug
|
||||||
|
|
||||||
|
log4j.logger.org.alfresco.repo.search.impl.lucene.index=error
|
||||||
|
log4j.logger.org.alfresco.repo.search.impl.lucene.fts.FullTextSearchIndexerImpl=warn
|
||||||
|
#log4j.logger.org.alfresco.repo.search.impl.lucene.index=DEBUG
|
||||||
|
|
||||||
|
# Audit debugging
|
||||||
|
# log4j.logger.org.alfresco.repo.audit=DEBUG
|
||||||
|
# log4j.logger.org.alfresco.repo.audit.model=DEBUG
|
||||||
|
|
||||||
|
# Forms debugging
|
||||||
|
# log4j.logger.org.alfresco.web.forms=debug
|
||||||
|
# log4j.logger.org.chiba.xml.xforms=debug
|
||||||
|
log4j.logger.org.alfresco.web.forms.xforms.XFormsBean=error
|
||||||
|
log4j.logger.org.alfresco.web.forms.XSLTRenderingEngine=error
|
||||||
|
|
||||||
|
# Property sheet and modelling debugging
|
||||||
|
# change to error to hide the warnings about missing properties and associations
|
||||||
|
log4j.logger.alfresco.missingProperties=warn
|
||||||
|
log4j.logger.org.alfresco.web.ui.repo.component.property.UIChildAssociation=warn
|
||||||
|
log4j.logger.org.alfresco.web.ui.repo.component.property.UIAssociation=warn
|
||||||
|
#log4j.logger.org.alfresco.web.ui.repo.component.property=debug
|
||||||
|
|
||||||
|
# Dictionary/Model debugging
|
||||||
|
log4j.logger.org.alfresco.repo.dictionary=warn
|
||||||
|
log4j.logger.org.alfresco.repo.dictionary.types.period=warn
|
||||||
|
|
||||||
|
# Virtualization Server Registry
|
||||||
|
log4j.logger.org.alfresco.mbeans.VirtServerRegistry=error
|
||||||
|
|
||||||
|
# Spring context runtime property setter
|
||||||
|
log4j.logger.org.alfresco.util.RuntimeSystemPropertiesSetter=info
|
||||||
|
|
||||||
|
# Debugging options for clustering
|
||||||
|
log4j.logger.org.alfresco.repo.content.ReplicatingContentStore=error
|
||||||
|
log4j.logger.org.alfresco.repo.content.replication=error
|
||||||
|
|
||||||
|
#log4j.logger.org.alfresco.repo.deploy.DeploymentServiceImpl=debug
|
||||||
|
|
||||||
|
# Activity service
|
||||||
|
log4j.logger.org.alfresco.repo.activities=warn
|
||||||
|
|
||||||
|
# User usage tracking
|
||||||
|
log4j.logger.org.alfresco.repo.usage=info
|
||||||
|
|
||||||
|
# Sharepoint
|
||||||
|
log4j.logger.org.alfresco.module.vti=info
|
||||||
|
|
||||||
|
# Forms Engine
|
||||||
|
log4j.logger.org.alfresco.repo.forms=info
|
||||||
|
log4j.logger.org.alfresco.web.config.forms=info
|
||||||
|
log4j.logger.org.alfresco.web.scripts.forms=info
|
||||||
|
|
||||||
|
# CMIS
|
||||||
|
log4j.logger.org.alfresco.opencmis=error
|
||||||
|
log4j.logger.org.alfresco.opencmis.AlfrescoCmisServiceInterceptor=error
|
||||||
|
log4j.logger.org.alfresco.cmis=error
|
||||||
|
log4j.logger.org.alfresco.cmis.dictionary=warn
|
||||||
|
log4j.logger.org.apache.chemistry.opencmis=info
|
||||||
|
|
||||||
|
# IMAP
|
||||||
|
log4j.logger.org.alfresco.repo.imap=info
|
||||||
|
|
||||||
|
# JBPM
|
||||||
|
# Note: non-fatal errors (eg. logged during job execution) should be handled by Alfresco's retrying transaction handler
|
||||||
|
log4j.logger.org.jbpm.graph.def.GraphElement=fatal
|
||||||
|
|
||||||
|
#log4j.logger.org.alfresco.repo.googledocs=debug
|
||||||
|
|
||||||
|
###### Scripting #######
|
||||||
|
|
||||||
|
# Web Framework
|
||||||
|
log4j.logger.org.springframework.extensions.webscripts=info
|
||||||
|
log4j.logger.org.springframework.extensions.webscripts.ScriptLogger=warn
|
||||||
|
log4j.logger.org.springframework.extensions.webscripts.ScriptDebugger=off
|
||||||
|
|
||||||
|
# Repository
|
||||||
|
log4j.logger.org.alfresco.repo.web.scripts=warn
|
||||||
|
log4j.logger.org.alfresco.repo.web.scripts.BaseWebScriptTest=info
|
||||||
|
log4j.logger.org.alfresco.repo.web.scripts.AlfrescoRhinoScriptDebugger=off
|
||||||
|
log4j.logger.org.alfresco.repo.jscript=error
|
||||||
|
log4j.logger.org.alfresco.repo.jscript.ScriptLogger=warn
|
||||||
|
log4j.logger.org.alfresco.repo.cmis.rest.CMISTest=info
|
||||||
|
|
||||||
|
log4j.logger.org.alfresco.repo.avm.actions=info
|
||||||
|
|
||||||
|
# Freemarker
|
||||||
|
# Note the freemarker.runtime logger is used to log non-fatal errors that are handled by Alfresco's retrying transaction handler
|
||||||
|
log4j.logger.freemarker.runtime=
|
||||||
|
|
||||||
|
# Metadata extraction
|
||||||
|
log4j.logger.org.alfresco.repo.content.metadata.AbstractMappingMetadataExtracter=warn
|
||||||
|
|
||||||
|
# Reduces PDFont error level due to ALF-7105
|
||||||
|
log4j.logger.org.apache.pdfbox.pdmodel.font.PDSimpleFont=fatal
|
||||||
|
log4j.logger.org.apache.pdfbox.pdmodel.font.PDFont=fatal
|
||||||
|
log4j.logger.org.apache.pdfbox.pdmodel.font.PDCIDFont=fatal
|
||||||
|
|
||||||
|
# no index support
|
||||||
|
log4j.logger.org.alfresco.repo.search.impl.noindex.NoIndexIndexer=fatal
|
||||||
|
log4j.logger.org.alfresco.repo.search.impl.noindex.NoIndexSearchService=fatal
|
@@ -0,0 +1,33 @@
|
|||||||
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
|
<!--
|
||||||
|
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.
|
||||||
|
|
||||||
|
-->
|
||||||
|
<!DOCTYPE faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN"
|
||||||
|
"http://java.sun.com/dtd/web-facesconfig_1_1.dtd">
|
||||||
|
<faces-config>
|
||||||
|
<!--
|
||||||
|
|
|
||||||
|
| Insert here custom faces configurations like:
|
||||||
|
| <managed-bean>
|
||||||
|
| <navigation-rule>
|
||||||
|
|
|
||||||
|
| This is loaded as part of the alfresco convention over configuration
|
||||||
|
-->
|
||||||
|
|
||||||
|
|
||||||
|
</faces-config>
|
||||||
|
|
@@ -0,0 +1,911 @@
|
|||||||
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
|
|
||||||
|
<!DOCTYPE web-app PUBLIC
|
||||||
|
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
|
||||||
|
"http://java.sun.com/dtd/web-app_2_3.dtd">
|
||||||
|
|
||||||
|
<web-app>
|
||||||
|
<display-name>Alfresco Web Client</display-name>
|
||||||
|
|
||||||
|
<description>Alfresco Web Client</description>
|
||||||
|
|
||||||
|
<context-param>
|
||||||
|
<param-name>org.jboss.jbossfaces.WAR_BUNDLES_JSF_IMPL</param-name>
|
||||||
|
<param-value>true</param-value>
|
||||||
|
</context-param>
|
||||||
|
|
||||||
|
<context-param>
|
||||||
|
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
|
||||||
|
<param-value>server</param-value>
|
||||||
|
</context-param>
|
||||||
|
|
||||||
|
<context-param>
|
||||||
|
<param-name>javax.faces.PARTIAL_STATE_SAVING_METHOD</param-name>
|
||||||
|
<param-value>false</param-value>
|
||||||
|
</context-param>
|
||||||
|
|
||||||
|
<context-param>
|
||||||
|
<param-name>javax.faces.CONFIG_FILES</param-name>
|
||||||
|
<param-value>/WEB-INF/faces-config-app.xml,/WEB-INF/faces-config-beans.xml,/WEB-INF/faces-config-navigation.xml,/WEB-INF/faces-config-common.xml,/WEB-INF/faces-config-repo.xml,/WEB-INF/faces-config-wcm.xml,/WEB-INF/faces-config-custom.xml</param-value>
|
||||||
|
</context-param>
|
||||||
|
|
||||||
|
<context-param>
|
||||||
|
<param-name>org.apache.myfaces.ALLOW_JAVASCRIPT</param-name>
|
||||||
|
<param-value>true</param-value>
|
||||||
|
</context-param>
|
||||||
|
|
||||||
|
<context-param>
|
||||||
|
<param-name>org.apache.myfaces.DETECT_JAVASCRIPT</param-name>
|
||||||
|
<param-value>false</param-value>
|
||||||
|
<description>This is an EXPERIMENTAL feature, so leave it off for now!</description>
|
||||||
|
</context-param>
|
||||||
|
|
||||||
|
<context-param>
|
||||||
|
<param-name>org.apache.myfaces.SERIALIZE_STATE_IN_SESSION</param-name>
|
||||||
|
<param-value>false</param-value>
|
||||||
|
<description>Stop MyFaces from Serializing the state to the session</description>
|
||||||
|
</context-param>
|
||||||
|
|
||||||
|
<!-- TODO: Change this to false for production -->
|
||||||
|
<context-param>
|
||||||
|
<param-name>org.apache.myfaces.PRETTY_HTML</param-name>
|
||||||
|
<param-value>true</param-value>
|
||||||
|
<description>
|
||||||
|
If true, rendered HTML code will be formatted, so that it is "human readable".
|
||||||
|
i.e. additional line separators and whitespace will be written, that do not
|
||||||
|
influence the HTML code.
|
||||||
|
Default: "true"
|
||||||
|
</description>
|
||||||
|
</context-param>
|
||||||
|
|
||||||
|
<context-param>
|
||||||
|
<param-name>org.apache.myfaces.AUTO_SCROLL</param-name>
|
||||||
|
<param-value>false</param-value>
|
||||||
|
<description>
|
||||||
|
If true, a javascript function will be rendered that is able to restore the
|
||||||
|
former vertical scroll on every request. Convenient feature if you have pages
|
||||||
|
with long lists and you do not want the browser page to always jump to the top
|
||||||
|
if you trigger a link or button action that stays on the same page.
|
||||||
|
Default: "false"
|
||||||
|
</description>
|
||||||
|
</context-param>
|
||||||
|
|
||||||
|
<!-- Spring Application Context location -->
|
||||||
|
<context-param>
|
||||||
|
<param-name>contextConfigLocation</param-name>
|
||||||
|
<param-value>/WEB-INF/web-application-context.xml</param-value>
|
||||||
|
<description>Spring config file location</description>
|
||||||
|
</context-param>
|
||||||
|
|
||||||
|
<context-param>
|
||||||
|
<param-name>log4jExposeWebAppRoot</param-name>
|
||||||
|
<param-value>false</param-value>
|
||||||
|
<description>Do not try to resolve web app root as file</description>
|
||||||
|
</context-param>
|
||||||
|
|
||||||
|
<!-- These were previously init params for the WebDAV servlet,
|
||||||
|
but since they are also needed to MT-enable the
|
||||||
|
ExternalAccess servlet, I have made them context wide. -->
|
||||||
|
<context-param>
|
||||||
|
<param-name>store</param-name>
|
||||||
|
<param-value>workspace://SpacesStore</param-value>
|
||||||
|
</context-param>
|
||||||
|
<context-param>
|
||||||
|
<param-name>rootPath</param-name>
|
||||||
|
<param-value>/app:company_home</param-value>
|
||||||
|
</context-param>
|
||||||
|
|
||||||
|
<context-param>
|
||||||
|
<param-name>org.apache.myfaces.ERROR_HANDLING</param-name>
|
||||||
|
<param-value>false</param-value>
|
||||||
|
</context-param>
|
||||||
|
|
||||||
|
<!-- Activiti context param placeholder -->
|
||||||
|
|
||||||
|
<context-param>
|
||||||
|
<param-name>com.ibm.ws.jsf.loadExternalDtd</param-name>
|
||||||
|
<param-value>false</param-value>
|
||||||
|
<description>Sets "http://apache.org/xml/features/nonvalidating/load-external-dtd" feature on the SAXParser to false if this parameter is false</description>
|
||||||
|
</context-param>
|
||||||
|
|
||||||
|
<filter>
|
||||||
|
<filter-name>Authentication Filter</filter-name>
|
||||||
|
<description>Authentication filter mapped only to faces URLs. Other URLs generally use proprietary means to talk to the AuthenticationComponent</description>
|
||||||
|
<filter-class>org.alfresco.repo.web.filter.beans.BeanProxyFilter</filter-class>
|
||||||
|
<init-param>
|
||||||
|
<param-name>beanName</param-name>
|
||||||
|
<param-value>AuthenticationFilter</param-value>
|
||||||
|
</init-param>
|
||||||
|
</filter>
|
||||||
|
|
||||||
|
<filter>
|
||||||
|
<filter-name>Global Authentication Filter</filter-name>
|
||||||
|
<description>Authentication filter mapped to all authenticated URLs. Mainly for SSO support</description>
|
||||||
|
<filter-class>org.alfresco.repo.web.filter.beans.BeanProxyFilter</filter-class>
|
||||||
|
<init-param>
|
||||||
|
<param-name>beanName</param-name>
|
||||||
|
<param-value>GlobalAuthenticationFilter</param-value>
|
||||||
|
</init-param>
|
||||||
|
</filter>
|
||||||
|
|
||||||
|
<filter>
|
||||||
|
<filter-name>WebScript Authentication Filter</filter-name>
|
||||||
|
<description>Authentication filter mapped to web script URLs. Mainly for SSO support</description>
|
||||||
|
<filter-class>org.alfresco.repo.web.filter.beans.BeanProxyFilter</filter-class>
|
||||||
|
<init-param>
|
||||||
|
<param-name>beanName</param-name>
|
||||||
|
<param-value>WebscriptAuthenticationFilter</param-value>
|
||||||
|
</init-param>
|
||||||
|
</filter>
|
||||||
|
|
||||||
|
<filter>
|
||||||
|
<filter-name>WebDAV Authentication Filter</filter-name>
|
||||||
|
<filter-class>org.alfresco.repo.web.filter.beans.BeanProxyFilter</filter-class>
|
||||||
|
<init-param>
|
||||||
|
<param-name>beanName</param-name>
|
||||||
|
<param-value>WebDavAuthenticationFilter</param-value>
|
||||||
|
</init-param>
|
||||||
|
</filter>
|
||||||
|
|
||||||
|
<filter>
|
||||||
|
<filter-name>Admin Authentication Filter</filter-name>
|
||||||
|
<filter-class>org.alfresco.web.app.servlet.AdminAuthenticationFilter</filter-class>
|
||||||
|
</filter>
|
||||||
|
|
||||||
|
<filter>
|
||||||
|
<filter-name>CacheExpiresFilter</filter-name>
|
||||||
|
<description>Set HTTP cache Expires header 30 days forward for a mapping.</description>
|
||||||
|
<filter-class>org.alfresco.web.scripts.servlet.StaticAssetCacheFilter</filter-class>
|
||||||
|
<init-param>
|
||||||
|
<param-name>expires</param-name>
|
||||||
|
<param-value>30</param-value>
|
||||||
|
<description>Add an Expires Header 30 days forward</description>
|
||||||
|
</init-param>
|
||||||
|
</filter>
|
||||||
|
|
||||||
|
<filter>
|
||||||
|
<filter-name>Global Localization Filter</filter-name>
|
||||||
|
<description>Sets fallback default locale for ALL requests</description>
|
||||||
|
<filter-class>org.alfresco.web.app.servlet.GlobalLocalizationFilter</filter-class>
|
||||||
|
</filter>
|
||||||
|
|
||||||
|
<filter>
|
||||||
|
<filter-name>JSF Session Synchronized Filter</filter-name>
|
||||||
|
<filter-class>org.alfresco.repo.web.filter.beans.SessionSynchronizedFilter</filter-class>
|
||||||
|
</filter>
|
||||||
|
|
||||||
|
<filter-mapping>
|
||||||
|
<filter-name>Global Localization Filter</filter-name>
|
||||||
|
<url-pattern>/*</url-pattern>
|
||||||
|
</filter-mapping>
|
||||||
|
|
||||||
|
<filter-mapping>
|
||||||
|
<filter-name>Global Authentication Filter</filter-name>
|
||||||
|
<url-pattern>/navigate/*</url-pattern>
|
||||||
|
</filter-mapping>
|
||||||
|
|
||||||
|
<filter-mapping>
|
||||||
|
<filter-name>Global Authentication Filter</filter-name>
|
||||||
|
<url-pattern>/command/*</url-pattern>
|
||||||
|
</filter-mapping>
|
||||||
|
|
||||||
|
<filter-mapping>
|
||||||
|
<filter-name>Global Authentication Filter</filter-name>
|
||||||
|
<url-pattern>/download/*</url-pattern>
|
||||||
|
</filter-mapping>
|
||||||
|
|
||||||
|
<filter-mapping>
|
||||||
|
<filter-name>Global Authentication Filter</filter-name>
|
||||||
|
<url-pattern>/template/*</url-pattern>
|
||||||
|
</filter-mapping>
|
||||||
|
|
||||||
|
<filter-mapping>
|
||||||
|
<filter-name>Global Authentication Filter</filter-name>
|
||||||
|
<url-pattern>/n/*</url-pattern>
|
||||||
|
</filter-mapping>
|
||||||
|
|
||||||
|
<filter-mapping>
|
||||||
|
<filter-name>Global Authentication Filter</filter-name>
|
||||||
|
<url-pattern>/c/*</url-pattern>
|
||||||
|
</filter-mapping>
|
||||||
|
|
||||||
|
<filter-mapping>
|
||||||
|
<filter-name>Global Authentication Filter</filter-name>
|
||||||
|
<url-pattern>/t/*</url-pattern>
|
||||||
|
</filter-mapping>
|
||||||
|
|
||||||
|
<filter-mapping>
|
||||||
|
<filter-name>Global Authentication Filter</filter-name>
|
||||||
|
<url-pattern>/d/*</url-pattern>
|
||||||
|
</filter-mapping>
|
||||||
|
|
||||||
|
<!-- The WebScript Authentication filter sits in front of web service URLs in addition to the global authentication filter -->
|
||||||
|
<filter-mapping>
|
||||||
|
<filter-name>WebScript Authentication Filter</filter-name>
|
||||||
|
<url-pattern>/wcservice/*</url-pattern>
|
||||||
|
</filter-mapping>
|
||||||
|
|
||||||
|
<filter-mapping>
|
||||||
|
<filter-name>WebScript Authentication Filter</filter-name>
|
||||||
|
<url-pattern>/wcs/*</url-pattern>
|
||||||
|
</filter-mapping>
|
||||||
|
|
||||||
|
<filter-mapping>
|
||||||
|
<filter-name>Global Authentication Filter</filter-name>
|
||||||
|
<url-pattern>/wcservice/*</url-pattern>
|
||||||
|
</filter-mapping>
|
||||||
|
|
||||||
|
<filter-mapping>
|
||||||
|
<filter-name>Global Authentication Filter</filter-name>
|
||||||
|
<url-pattern>/wcs/*</url-pattern>
|
||||||
|
</filter-mapping>
|
||||||
|
|
||||||
|
<filter-mapping>
|
||||||
|
<filter-name>Global Authentication Filter</filter-name>
|
||||||
|
<url-pattern>/ajax/*</url-pattern>
|
||||||
|
</filter-mapping>
|
||||||
|
|
||||||
|
<filter-mapping>
|
||||||
|
<filter-name>Global Authentication Filter</filter-name>
|
||||||
|
<url-pattern>/faces/*</url-pattern>
|
||||||
|
</filter-mapping>
|
||||||
|
|
||||||
|
<filter-mapping>
|
||||||
|
<filter-name>Authentication Filter</filter-name>
|
||||||
|
<url-pattern>/faces/*</url-pattern>
|
||||||
|
</filter-mapping>
|
||||||
|
|
||||||
|
<filter-mapping>
|
||||||
|
<filter-name>WebDAV Authentication Filter</filter-name>
|
||||||
|
<url-pattern>/webdav/*</url-pattern>
|
||||||
|
</filter-mapping>
|
||||||
|
|
||||||
|
<filter-mapping>
|
||||||
|
<filter-name>Admin Authentication Filter</filter-name>
|
||||||
|
<url-pattern>/faces/jsp/admin/*</url-pattern>
|
||||||
|
</filter-mapping>
|
||||||
|
|
||||||
|
<filter-mapping>
|
||||||
|
<filter-name>Admin Authentication Filter</filter-name>
|
||||||
|
<url-pattern>/faces/jsp/categories/*</url-pattern>
|
||||||
|
</filter-mapping>
|
||||||
|
|
||||||
|
<filter-mapping>
|
||||||
|
<filter-name>Admin Authentication Filter</filter-name>
|
||||||
|
<url-pattern>/faces/jsp/groups/*</url-pattern>
|
||||||
|
</filter-mapping>
|
||||||
|
|
||||||
|
<filter-mapping>
|
||||||
|
<filter-name>Admin Authentication Filter</filter-name>
|
||||||
|
<url-pattern>/faces/jsp/users/delete-user.jsp</url-pattern>
|
||||||
|
</filter-mapping>
|
||||||
|
|
||||||
|
<filter-mapping>
|
||||||
|
<filter-name>Admin Authentication Filter</filter-name>
|
||||||
|
<url-pattern>/faces/jsp/users/users.jsp</url-pattern>
|
||||||
|
</filter-mapping>
|
||||||
|
|
||||||
|
<filter-mapping>
|
||||||
|
<filter-name>Admin Authentication Filter</filter-name>
|
||||||
|
<url-pattern>/faces/jsp/admin/system-info.jsp</url-pattern>
|
||||||
|
</filter-mapping>
|
||||||
|
|
||||||
|
<filter-mapping>
|
||||||
|
<filter-name>JSF Session Synchronized Filter</filter-name>
|
||||||
|
<url-pattern>/faces/*</url-pattern>
|
||||||
|
</filter-mapping>
|
||||||
|
|
||||||
|
<filter-mapping>
|
||||||
|
<filter-name>CacheExpiresFilter</filter-name>
|
||||||
|
<url-pattern>*.jpg</url-pattern>
|
||||||
|
</filter-mapping>
|
||||||
|
<filter-mapping>
|
||||||
|
<filter-name>CacheExpiresFilter</filter-name>
|
||||||
|
<url-pattern>*.png</url-pattern>
|
||||||
|
</filter-mapping>
|
||||||
|
<filter-mapping>
|
||||||
|
<filter-name>CacheExpiresFilter</filter-name>
|
||||||
|
<url-pattern>*.gif</url-pattern>
|
||||||
|
</filter-mapping>
|
||||||
|
<filter-mapping>
|
||||||
|
<filter-name>CacheExpiresFilter</filter-name>
|
||||||
|
<url-pattern>*.css</url-pattern>
|
||||||
|
</filter-mapping>
|
||||||
|
<filter-mapping>
|
||||||
|
<filter-name>CacheExpiresFilter</filter-name>
|
||||||
|
<url-pattern>*.js</url-pattern>
|
||||||
|
</filter-mapping>
|
||||||
|
|
||||||
|
<listener>
|
||||||
|
<listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>
|
||||||
|
</listener>
|
||||||
|
|
||||||
|
<listener>
|
||||||
|
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
|
||||||
|
</listener>
|
||||||
|
|
||||||
|
<!-- Spring Context Loader listener - can disable loading of context if runtime config changes are needed -->
|
||||||
|
<listener>
|
||||||
|
<listener-class>org.alfresco.web.app.ContextLoaderListener</listener-class>
|
||||||
|
</listener>
|
||||||
|
|
||||||
|
<!-- Web Application Context listener - session create/destroy debugging and bootstrap Spring init -->
|
||||||
|
<listener>
|
||||||
|
<listener-class>org.alfresco.web.app.ContextListener</listener-class>
|
||||||
|
</listener>
|
||||||
|
|
||||||
|
<!-- WebDAV session listener - ensures that no locked resources is left after session expires -->
|
||||||
|
<listener>
|
||||||
|
<listener-class>org.alfresco.repo.webdav.WebDAVSessionListener</listener-class>
|
||||||
|
</listener>
|
||||||
|
|
||||||
|
<!-- Web Services context listener for OpenCMIS -->
|
||||||
|
<listener>
|
||||||
|
<listener-class>com.sun.xml.ws.transport.http.servlet.WSServletContextListener</listener-class>
|
||||||
|
</listener>
|
||||||
|
|
||||||
|
<!-- Activiti listener placeholder -->
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Faces Servlet -->
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>Faces Servlet</servlet-name>
|
||||||
|
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
|
||||||
|
<load-on-startup>1</load-on-startup>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>uploadFile</servlet-name>
|
||||||
|
<servlet-class>org.alfresco.web.app.servlet.UploadFileServlet</servlet-class>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>uploadContent</servlet-name>
|
||||||
|
<servlet-class>org.alfresco.web.app.servlet.UploadContentServlet</servlet-class>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>downloadContent</servlet-name>
|
||||||
|
<servlet-class>org.alfresco.web.app.servlet.DownloadContentServlet</servlet-class>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>downloadRawContent</servlet-name>
|
||||||
|
<servlet-class>org.alfresco.web.app.servlet.DownloadRawContentServlet</servlet-class>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>guestDownloadContent</servlet-name>
|
||||||
|
<servlet-class>org.alfresco.web.app.servlet.GuestDownloadContentServlet</servlet-class>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>guestTemplateContent</servlet-name>
|
||||||
|
<servlet-class>org.alfresco.web.app.servlet.GuestTemplateContentServlet</servlet-class>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>externalAccess</servlet-name>
|
||||||
|
<servlet-class>org.alfresco.web.app.servlet.ExternalAccessServlet</servlet-class>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>templateContent</servlet-name>
|
||||||
|
<servlet-class>org.alfresco.web.app.servlet.TemplateContentServlet</servlet-class>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>commandServlet</servlet-name>
|
||||||
|
<servlet-class>org.alfresco.web.app.servlet.CommandServlet</servlet-class>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>ajaxServlet</servlet-name>
|
||||||
|
<servlet-class>org.alfresco.web.app.servlet.ajax.AjaxServlet</servlet-class>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>axis</servlet-name>
|
||||||
|
<servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class>
|
||||||
|
<load-on-startup>5</load-on-startup>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>CXFServlet</servlet-name>
|
||||||
|
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
|
||||||
|
<load-on-startup>6</load-on-startup>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>WebDAV</servlet-name>
|
||||||
|
<servlet-class>org.alfresco.repo.webdav.WebDAVServlet</servlet-class>
|
||||||
|
<load-on-startup>5</load-on-startup>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>apiServlet</servlet-name>
|
||||||
|
<servlet-class>org.springframework.extensions.webscripts.servlet.WebScriptServlet</servlet-class>
|
||||||
|
<init-param>
|
||||||
|
<param-name>authenticator</param-name>
|
||||||
|
<param-value>webscripts.authenticator.basic</param-value>
|
||||||
|
</init-param>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>wcapiServlet</servlet-name>
|
||||||
|
<servlet-class>org.springframework.extensions.webscripts.servlet.WebScriptServlet</servlet-class>
|
||||||
|
<init-param>
|
||||||
|
<param-name>authenticator</param-name>
|
||||||
|
<param-value>webscripts.authenticator.webclient</param-value>
|
||||||
|
</init-param>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>portalapiServlet</servlet-name>
|
||||||
|
<servlet-class>org.springframework.extensions.webscripts.servlet.WebScriptServlet</servlet-class>
|
||||||
|
<init-param>
|
||||||
|
<param-name>authenticator</param-name>
|
||||||
|
<param-value>webscripts.authenticator.webclient</param-value>
|
||||||
|
</init-param>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>facebookServlet</servlet-name>
|
||||||
|
<servlet-class>org.alfresco.repo.web.scripts.facebook.FacebookServlet</servlet-class>
|
||||||
|
<init-param>
|
||||||
|
<param-name>authenticator</param-name>
|
||||||
|
<param-value>webscripts.authenticator.facebook</param-value>
|
||||||
|
</init-param>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>fbapiServlet</servlet-name>
|
||||||
|
<servlet-class>org.alfresco.repo.web.scripts.facebook.FacebookAPIServlet</servlet-class>
|
||||||
|
<init-param>
|
||||||
|
<param-name>authenticator</param-name>
|
||||||
|
<param-value>webscripts.authenticator.facebook</param-value>
|
||||||
|
</init-param>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>proxyServlet</servlet-name>
|
||||||
|
<servlet-class>org.alfresco.web.app.servlet.HTTPProxyServlet</servlet-class>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>workflowDefinitionImageServlet</servlet-name>
|
||||||
|
<servlet-class>org.alfresco.web.app.servlet.WorkflowDefinitionImageServlet</servlet-class>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>JBPMDeployProcessServlet</servlet-name>
|
||||||
|
<servlet-class>org.alfresco.web.app.servlet.JBPMDeployProcessServlet</servlet-class>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>CMISFileShareServlet</servlet-name>
|
||||||
|
<servlet-class>org.apache.chemistry.opencmis.browser.BrowseServlet</servlet-class>
|
||||||
|
<init-param>
|
||||||
|
<param-name>auxroot</param-name>
|
||||||
|
<param-value>cmisfs/browser/</param-value>
|
||||||
|
</init-param>
|
||||||
|
<init-param>
|
||||||
|
<param-name>allow</param-name>
|
||||||
|
<param-value>http.*</param-value>
|
||||||
|
</init-param>
|
||||||
|
<init-param>
|
||||||
|
<param-name>stylesheet:application/atomsvc+xml</param-name>
|
||||||
|
<param-value>/cmisfs/stylesheets/service.xsl</param-value>
|
||||||
|
</init-param>
|
||||||
|
<init-param>
|
||||||
|
<param-name>stylesheet:application/atom+xml;type=feed</param-name>
|
||||||
|
<param-value>/cmisfs/stylesheets/feed.xsl</param-value>
|
||||||
|
</init-param>
|
||||||
|
<init-param>
|
||||||
|
<param-name>stylesheet:application/cmistree+xml</param-name>
|
||||||
|
<param-value>/cmisfs/stylesheets/feed.xsl</param-value>
|
||||||
|
</init-param>
|
||||||
|
<init-param>
|
||||||
|
<param-name>stylesheet:application/atom+xml;type=entry</param-name>
|
||||||
|
<param-value>/cmisfs/stylesheets/entry.xsl</param-value>
|
||||||
|
</init-param>
|
||||||
|
<init-param>
|
||||||
|
<param-name>stylesheet:application/cmisallowableactions+xml</param-name>
|
||||||
|
<param-value>/cmisfs/stylesheets/actions.xsl</param-value>
|
||||||
|
</init-param>
|
||||||
|
<init-param>
|
||||||
|
<param-name>stylesheet:application/cmisacl+xml</param-name>
|
||||||
|
<param-value>/cmisfs/stylesheets/acl.xsl</param-value>
|
||||||
|
</init-param>
|
||||||
|
<init-param>
|
||||||
|
<param-name>override-stylesheet:renditions</param-name>
|
||||||
|
<param-value>/cmisfs/stylesheets/renditions.xsl</param-value>
|
||||||
|
</init-param>
|
||||||
|
<init-param>
|
||||||
|
<param-name>override-stylesheet:relationships</param-name>
|
||||||
|
<param-value>/cmisfs/stylesheets/relationships.xsl</param-value>
|
||||||
|
</init-param>
|
||||||
|
<init-param>
|
||||||
|
<param-name>override-stylesheet:thumbnails</param-name>
|
||||||
|
<param-value>/cmisfs/stylesheets/thumbnails.xsl</param-value>
|
||||||
|
</init-param>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>cmisws</servlet-name>
|
||||||
|
<servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class>
|
||||||
|
<load-on-startup>7</load-on-startup>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>cmisatom</servlet-name>
|
||||||
|
<servlet-class>org.apache.chemistry.opencmis.server.impl.atompub.CmisAtomPubServlet</servlet-class>
|
||||||
|
<init-param>
|
||||||
|
<param-name>callContextHandler</param-name>
|
||||||
|
<param-value>org.apache.chemistry.opencmis.server.shared.BasicAuthCallContextHandler</param-value>
|
||||||
|
</init-param>
|
||||||
|
<load-on-startup>8</load-on-startup>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>cmisbrowser</servlet-name>
|
||||||
|
<servlet-class>org.apache.chemistry.opencmis.server.impl.browser.CmisBrowserBindingServlet</servlet-class>
|
||||||
|
<init-param>
|
||||||
|
<param-name>callContextHandler</param-name>
|
||||||
|
<param-value>org.apache.chemistry.opencmis.server.shared.BasicAuthCallContextHandler</param-value>
|
||||||
|
</init-param>
|
||||||
|
<load-on-startup>8</load-on-startup>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>cmistck</servlet-name>
|
||||||
|
<servlet-class>org.apache.chemistry.opencmis.tck.runner.WebRunnerServlet</servlet-class>
|
||||||
|
<load-on-startup>8</load-on-startup>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>authenticatorServlet</servlet-name>
|
||||||
|
<servlet-class>org.alfresco.repo.web.scripts.servlet.AuthenticatorServlet</servlet-class>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<!-- Activiti servlet placeholder -->
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>Faces Servlet</servlet-name>
|
||||||
|
<url-pattern>/faces/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>uploadFile</servlet-name>
|
||||||
|
<url-pattern>/uploadFileServlet</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>uploadContent</servlet-name>
|
||||||
|
<url-pattern>/upload/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>downloadContent</servlet-name>
|
||||||
|
<url-pattern>/download/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>downloadContent</servlet-name>
|
||||||
|
<url-pattern>/d/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>downloadRawContent</servlet-name>
|
||||||
|
<url-pattern>/dr</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>guestDownloadContent</servlet-name>
|
||||||
|
<url-pattern>/guestDownload/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>guestDownloadContent</servlet-name>
|
||||||
|
<url-pattern>/gd/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>templateContent</servlet-name>
|
||||||
|
<url-pattern>/template/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>templateContent</servlet-name>
|
||||||
|
<url-pattern>/t/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>guestTemplateContent</servlet-name>
|
||||||
|
<url-pattern>/guestTemplate/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>guestTemplateContent</servlet-name>
|
||||||
|
<url-pattern>/gt/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>externalAccess</servlet-name>
|
||||||
|
<url-pattern>/navigate/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>externalAccess</servlet-name>
|
||||||
|
<url-pattern>/n/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>commandServlet</servlet-name>
|
||||||
|
<url-pattern>/command/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>commandServlet</servlet-name>
|
||||||
|
<url-pattern>/c/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>ajaxServlet</servlet-name>
|
||||||
|
<url-pattern>/ajax/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>axis</servlet-name>
|
||||||
|
<url-pattern>/api/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>CXFServlet</servlet-name>
|
||||||
|
<url-pattern>/cmis/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>WebDAV</servlet-name>
|
||||||
|
<url-pattern>/webdav/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>apiServlet</servlet-name>
|
||||||
|
<url-pattern>/service/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>apiServlet</servlet-name>
|
||||||
|
<url-pattern>/s/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>wcapiServlet</servlet-name>
|
||||||
|
<url-pattern>/wcservice/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>wcapiServlet</servlet-name>
|
||||||
|
<url-pattern>/wcs/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>portalapiServlet</servlet-name>
|
||||||
|
<url-pattern>/168service/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>portalapiServlet</servlet-name>
|
||||||
|
<url-pattern>/168s/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>facebookServlet</servlet-name>
|
||||||
|
<url-pattern>/facebook/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>facebookServlet</servlet-name>
|
||||||
|
<url-pattern>/fb/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>fbapiServlet</servlet-name>
|
||||||
|
<url-pattern>/fbservice/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>fbapiServlet</servlet-name>
|
||||||
|
<url-pattern>/fbs/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>proxyServlet</servlet-name>
|
||||||
|
<url-pattern>/proxy</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>JBPMDeployProcessServlet</servlet-name>
|
||||||
|
<url-pattern>/jbpm/deployprocess</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>workflowDefinitionImageServlet</servlet-name>
|
||||||
|
<url-pattern>/workflowdefinitionimage/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>CMISFileShareServlet</servlet-name>
|
||||||
|
<url-pattern>/cmisbrowse</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>cmisws</servlet-name>
|
||||||
|
<url-pattern>/cmisws/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>cmisatom</servlet-name>
|
||||||
|
<url-pattern>/cmisatom/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>cmisbrowser</servlet-name>
|
||||||
|
<url-pattern>/cmisbrowser/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<!-- The CMIS TCK is deactivated by default. -->
|
||||||
|
<!-- CMISTCK
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>cmistck</servlet-name>
|
||||||
|
<url-pattern>/cmistck</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
CMISTCK -->
|
||||||
|
|
||||||
|
<!-- Activiti servlet mapping placeholder -->
|
||||||
|
|
||||||
|
<session-config>
|
||||||
|
<session-timeout>60</session-timeout>
|
||||||
|
</session-config>
|
||||||
|
|
||||||
|
<welcome-file-list>
|
||||||
|
<welcome-file>index.jsp</welcome-file>
|
||||||
|
</welcome-file-list>
|
||||||
|
|
||||||
|
<error-page>
|
||||||
|
<exception-type>java.lang.Exception</exception-type>
|
||||||
|
<location>/jsp/error.jsp</location>
|
||||||
|
</error-page>
|
||||||
|
|
||||||
|
<resource-ref>
|
||||||
|
<description>The Alfresco database connection</description>
|
||||||
|
<res-ref-name>jdbc/dataSource</res-ref-name>
|
||||||
|
<res-type>javax.sql.DataSource</res-type>
|
||||||
|
<res-auth>Container</res-auth>
|
||||||
|
<res-sharing-scope>Unshareable</res-sharing-scope>
|
||||||
|
</resource-ref>
|
||||||
|
<!--
|
||||||
|
<security-constraint>
|
||||||
|
<web-resource-collection>
|
||||||
|
<web-resource-name>SOLR</web-resource-name>
|
||||||
|
<url-pattern>/service/api/solr/*</url-pattern>
|
||||||
|
</web-resource-collection>
|
||||||
|
|
||||||
|
<auth-constraint>
|
||||||
|
<role-name>repoclient</role-name>
|
||||||
|
</auth-constraint>
|
||||||
|
|
||||||
|
<user-data-constraint>
|
||||||
|
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
|
||||||
|
</user-data-constraint>
|
||||||
|
</security-constraint>
|
||||||
|
|
||||||
|
<security-constraint>
|
||||||
|
<web-resource-collection>
|
||||||
|
<web-resource-name>SOLR</web-resource-name>
|
||||||
|
<url-pattern>/s/api/solr/*</url-pattern>
|
||||||
|
</web-resource-collection>
|
||||||
|
|
||||||
|
<auth-constraint>
|
||||||
|
<role-name>repoclient</role-name>
|
||||||
|
</auth-constraint>
|
||||||
|
|
||||||
|
<user-data-constraint>
|
||||||
|
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
|
||||||
|
</user-data-constraint>
|
||||||
|
</security-constraint>
|
||||||
|
|
||||||
|
<security-constraint>
|
||||||
|
<web-resource-collection>
|
||||||
|
<web-resource-name>SOLR</web-resource-name>
|
||||||
|
<url-pattern>/wcservice/api/solr/*</url-pattern>
|
||||||
|
</web-resource-collection>
|
||||||
|
|
||||||
|
<auth-constraint>
|
||||||
|
<role-name>repoclient</role-name>
|
||||||
|
</auth-constraint>
|
||||||
|
|
||||||
|
<user-data-constraint>
|
||||||
|
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
|
||||||
|
</user-data-constraint>
|
||||||
|
</security-constraint>
|
||||||
|
|
||||||
|
<security-constraint>
|
||||||
|
<web-resource-collection>
|
||||||
|
<web-resource-name>SOLR</web-resource-name>
|
||||||
|
<url-pattern>/wcs/api/solr/*</url-pattern>
|
||||||
|
</web-resource-collection>
|
||||||
|
|
||||||
|
<auth-constraint>
|
||||||
|
<role-name>repoclient</role-name>
|
||||||
|
</auth-constraint>
|
||||||
|
|
||||||
|
<user-data-constraint>
|
||||||
|
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
|
||||||
|
</user-data-constraint>
|
||||||
|
</security-constraint>
|
||||||
|
|
||||||
|
<login-config>
|
||||||
|
<auth-method>CLIENT-CERT</auth-method>
|
||||||
|
<realm-name>Repository</realm-name>
|
||||||
|
</login-config>
|
||||||
|
|
||||||
|
<security-role>
|
||||||
|
<role-name>repoclient</role-name>
|
||||||
|
</security-role>
|
||||||
|
-->
|
||||||
|
|
||||||
|
<env-entry>
|
||||||
|
<description>A flag that globally enables or disables startup of the major Alfresco subsystems.</description>
|
||||||
|
<env-entry-name>properties/startup.enable</env-entry-name>
|
||||||
|
<env-entry-value>true</env-entry-value>
|
||||||
|
<env-entry-type>java.lang.Boolean</env-entry-type>
|
||||||
|
</env-entry>
|
||||||
|
|
||||||
|
<env-entry>
|
||||||
|
<description>The filesystem directory below which content and index data is stored. Should be on a shared disk
|
||||||
|
if this is a clustered installation.</description>
|
||||||
|
<env-entry-name>properties/dir.root</env-entry-name>
|
||||||
|
<env-entry-value/> <!-- Empty value included for JBoss compatibility -->
|
||||||
|
<env-entry-type>java.lang.String</env-entry-type>
|
||||||
|
</env-entry>
|
||||||
|
|
||||||
|
<env-entry>
|
||||||
|
<description>The fully qualified name of a org.hibernate.dialect.Dialect subclass that allows Hibernate to
|
||||||
|
generate SQL optimized for a particular relational database. Choose from org.hibernate.dialect.DerbyDialect,
|
||||||
|
org.hibernate.dialect.MySQLInnoDBDialect,
|
||||||
|
org.alfresco.repo.domain.hibernate.dialect.AlfrescoOracle9Dialect,
|
||||||
|
org.alfresco.repo.domain.hibernate.dialect.AlfrescoSybaseAnywhereDialect,
|
||||||
|
org.alfresco.repo.domain.hibernate.dialect.AlfrescoSQLServerDialect, org.hibernate.dialect.PostgreSQLDialect</description>
|
||||||
|
<env-entry-name>properties/hibernate.dialect</env-entry-name>
|
||||||
|
<env-entry-value/> <!-- Empty value included for JBoss compatibility -->
|
||||||
|
<env-entry-type>java.lang.String</env-entry-type>
|
||||||
|
</env-entry>
|
||||||
|
|
||||||
|
<env-entry>
|
||||||
|
<description>Mapping from tokens in Hibernate queries to SQL tokens. For PostgreSQL, set this to "true
|
||||||
|
TRUE, false FALSE".</description>
|
||||||
|
<env-entry-name>properties/hibernate.query.substitutions</env-entry-name>
|
||||||
|
<env-entry-value/> <!-- Empty value included for JBoss compatibility -->
|
||||||
|
<env-entry-type>java.lang.String</env-entry-type>
|
||||||
|
</env-entry>
|
||||||
|
|
||||||
|
<env-entry>
|
||||||
|
<description>Enable use of JDBC3 PreparedStatement.getGeneratedKeys() to retrieve natively generated keys
|
||||||
|
after insert. Requires JDBC3+ driver. Set to false if your driver has problems with the Hibernate identifier
|
||||||
|
generators. By default, tries to determine the driver capabilities using connection metadata. </description>
|
||||||
|
<env-entry-name>properties/hibernate.jdbc.use_get_generated_keys</env-entry-name>
|
||||||
|
<env-entry-value/> <!-- Empty value included for JBoss compatibility -->
|
||||||
|
<env-entry-type>java.lang.String</env-entry-type>
|
||||||
|
</env-entry>
|
||||||
|
|
||||||
|
<env-entry>
|
||||||
|
<description>Qualify unqualified table names with the given schema/tablespace in generated SQL. It may be
|
||||||
|
necessary to set this when the target database has more than one schema.</description>
|
||||||
|
<env-entry-name>properties/hibernate.default_schema</env-entry-name>
|
||||||
|
<env-entry-value/> <!-- Empty value included for JBoss compatibility -->
|
||||||
|
<env-entry-type>java.lang.String</env-entry-type>
|
||||||
|
</env-entry>
|
||||||
|
|
||||||
|
</web-app>
|
@@ -0,0 +1,16 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">
|
||||||
|
|
||||||
|
<Configure id="Server" class="org.mortbay.jetty.Server">
|
||||||
|
<New id="myDataSource"
|
||||||
|
class="org.mortbay.jetty.plus.naming.Resource">
|
||||||
|
<Arg>jdbc/dataSource</Arg>
|
||||||
|
<Arg>
|
||||||
|
<New class="${alfresco.db.datasource.class}">
|
||||||
|
<Set name="URL">${alfresco.db.url}</Set>
|
||||||
|
<Set name="User">${alfresco.db.username}</Set>
|
||||||
|
<Set name="Password">${alfresco.db.password}</Set>
|
||||||
|
</New>
|
||||||
|
</Arg>
|
||||||
|
</New>
|
||||||
|
</Configure>
|
@@ -0,0 +1,37 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<artifactId>${artifactId}</artifactId>
|
||||||
|
<name>Alfresco AMP Module</name>
|
||||||
|
<packaging>amp</packaging>
|
||||||
|
<description>This is a sample AMP project, depended upon by the alfresco WAR module</description>
|
||||||
|
|
||||||
|
<parent>
|
||||||
|
<groupId>${groupId}</groupId>
|
||||||
|
<artifactId>${rootArtifactId}</artifactId>
|
||||||
|
<version>${version}</version>
|
||||||
|
</parent>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Following dependencies are needed for compiling
|
||||||
|
Java code in src/main/java; <scope>provided</scope>
|
||||||
|
is inherited for each of the following; for more
|
||||||
|
info, please refer to alfresco-integration-parent
|
||||||
|
POM definition
|
||||||
|
@TODO - document
|
||||||
|
-->
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>${alfresco.groupId}</groupId>
|
||||||
|
<artifactId>alfresco-repository</artifactId>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<!-- This property allow to switch Repo AMP vs Share AMP.
|
||||||
|
Set alfresco.client.war=share to run this AMP against Share
|
||||||
|
-->
|
||||||
|
<alfresco.client.war>alfresco</alfresco.client.war>
|
||||||
|
</properties>
|
||||||
|
|
||||||
|
</project>
|
@@ -0,0 +1,34 @@
|
|||||||
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
|
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>
|
||||||
|
<!--
|
||||||
|
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.
|
||||||
|
|
||||||
|
-->
|
||||||
|
<beans>
|
||||||
|
|
||||||
|
<!-- A simple class that is initialized by Spring -->
|
||||||
|
<bean id="changeMe.exampleBean" class="org.alfresco.demoamp.Demo" init-method="init" />
|
||||||
|
|
||||||
|
<!-- A simple module component that will be executed once -->
|
||||||
|
<bean id="changeMe.exampleComponent" class="org.alfresco.demoamp.DemoComponent" parent="module.baseComponent" >
|
||||||
|
<property name="moduleId" value="${project.artifactId}" /> <!-- See module.properties -->
|
||||||
|
<property name="name" value="exampleComponent" />
|
||||||
|
<property name="description" value="A demonstration component" />
|
||||||
|
<property name="sinceVersion" value="2.0" />
|
||||||
|
<property name="appliesFromVersion" value="2.0" />
|
||||||
|
</bean>
|
||||||
|
|
||||||
|
</beans>
|
@@ -0,0 +1,25 @@
|
|||||||
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
|
<!--
|
||||||
|
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.
|
||||||
|
|
||||||
|
-->
|
||||||
|
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>
|
||||||
|
|
||||||
|
<beans>
|
||||||
|
|
||||||
|
<import resource="classpath:alfresco/module/${artifactId}/context/service-context.xml" />
|
||||||
|
|
||||||
|
</beans>
|
@@ -0,0 +1,47 @@
|
|||||||
|
# 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.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# SDK Sample module
|
||||||
|
|
||||||
|
# ==== Beginning of Alfresco required/optional properties ====== #
|
||||||
|
|
||||||
|
module.id=${project.artifactId}
|
||||||
|
#module.aliases=myModule-123, my-module
|
||||||
|
module.title=${project.name}
|
||||||
|
module.description=${project.description}
|
||||||
|
module.version=${noSnapshotVersion}
|
||||||
|
|
||||||
|
# The following optional properties can be used to prevent the module from being added
|
||||||
|
# to inappropriate versions of the WAR file.
|
||||||
|
# module.repo.version.min=2.0
|
||||||
|
# module.repo.version.max=2.1
|
||||||
|
|
||||||
|
# FIXME: This dependencies should come out of mvn dependencies on amp
|
||||||
|
|
||||||
|
# The following describe dependencies on other modules
|
||||||
|
# Depends on net.sf.myproject.module.SupportModuleA version ${version} or later
|
||||||
|
# module.depends.net.sf.myproject.module.SupportModuleA=${version}-*
|
||||||
|
# Depends on net.sf.myproject.module.SupportModuleA version ${version} to 2.0
|
||||||
|
# module.depends.net.sf.myproject.module.SupportModuleB=${version}-2.0
|
||||||
|
# Depends on net.sf.myproject.module.SupportModuleC - any version
|
||||||
|
# module.depends.net.sf.myproject.module.SupportModuleB=*
|
||||||
|
|
||||||
|
|
||||||
|
# ==== End of Alfresco required/optional properties ======= #
|
||||||
|
|
||||||
|
|
||||||
|
# ==== Beginning of module required properties/optional ====== #
|
@@ -0,0 +1,16 @@
|
|||||||
|
/*
|
||||||
|
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.
|
||||||
|
*/
|
@@ -0,0 +1,16 @@
|
|||||||
|
<!--
|
||||||
|
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.
|
||||||
|
-->
|
@@ -0,0 +1,2 @@
|
|||||||
|
This folder (root in the AMP) gets mapped automagically in WEB-INF/licenses
|
||||||
|
in the war build
|
@@ -0,0 +1,16 @@
|
|||||||
|
/*
|
||||||
|
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.
|
||||||
|
*/
|
@@ -0,0 +1,15 @@
|
|||||||
|
package org.alfresco.demoamp;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This class does nothing except dump some output to <i>system.out</i>.
|
||||||
|
* This is a sample taken from Alfresco SDK
|
||||||
|
*
|
||||||
|
* @author Derek Hulley
|
||||||
|
*/
|
||||||
|
public class Demo
|
||||||
|
{
|
||||||
|
public void init()
|
||||||
|
{
|
||||||
|
System.out.println("SDK Demo AMP class has been loaded");
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,26 @@
|
|||||||
|
package org.alfresco.demoamp;
|
||||||
|
|
||||||
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
|
import org.alfresco.repo.module.AbstractModuleComponent;
|
||||||
|
import org.apache.commons.logging.Log;
|
||||||
|
import org.apache.commons.logging.LogFactory;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A basic component that will be started for this module.
|
||||||
|
* This is a sample taken from Alfresco SDK
|
||||||
|
*
|
||||||
|
* @author Derek Hulley
|
||||||
|
*/
|
||||||
|
public class DemoComponent extends AbstractModuleComponent
|
||||||
|
{
|
||||||
|
Log log = LogFactory.getLog(DemoComponent.class);
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void executeInternal() throws Throwable
|
||||||
|
{
|
||||||
|
System.out.println("DemoComponent has been executed");
|
||||||
|
log.debug("Test debug logging is working");
|
||||||
|
log.info("This should not be outputted by default");
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,57 @@
|
|||||||
|
# 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
|
||||||
|
# -------------------
|
||||||
|
|
||||||
|
# Sample custom content and index data location
|
||||||
|
# This will create alf_data Relative to appserver run folder
|
||||||
|
# In this default file we take the property from the POM (for compatbility with local jetty and jboss deployments) but it can also be edited here.
|
||||||
|
dir.root=${alfresco.data.location}
|
||||||
|
# Allowed values are: NONE, AUTO, FULL
|
||||||
|
index.recovery.mode=NONE
|
||||||
|
# This is default. Allowed values are: solr, lucene, noindex
|
||||||
|
index.subsystem.name=solr
|
||||||
|
|
||||||
|
#dir.keystore=.
|
||||||
|
#keystore.password=storepassword
|
||||||
|
#metadata.password=metapassword
|
||||||
|
|
||||||
|
# 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}
|
||||||
|
db.pool.initial=10
|
||||||
|
db.pool.max=100
|
||||||
|
|
||||||
|
# File servers related properties
|
||||||
|
# For local builds we disable CIFS and FTP. Edit the following property to reenable them
|
||||||
|
smb.server.enabled=false
|
||||||
|
smb.server.name=CFS_SHARE_LOCAL
|
||||||
|
smb.server.domain=mycompany.com
|
||||||
|
smb.server.bindto=127.0.0.1
|
||||||
|
smb.tcpip.port=1445
|
||||||
|
netbios.session.port=1139
|
||||||
|
netbios.name.port=1137
|
||||||
|
netbios.datagram.port=1138
|
||||||
|
ftp.server.enables=false
|
||||||
|
ftp.port=1121
|
||||||
|
ftp.authenticator=alfresco
|
@@ -0,0 +1,23 @@
|
|||||||
|
# Overrides only log4j locations and add the test logging properties
|
||||||
|
# This gets merged with the main file
|
||||||
|
|
||||||
|
# Set root logger level to error
|
||||||
|
log4j.rootLogger=${app.log.root.level}, Console, File
|
||||||
|
|
||||||
|
###### Console appender definition #######
|
||||||
|
|
||||||
|
# All outputs currently set to be a ConsoleAppender.
|
||||||
|
log4j.appender.Console=org.apache.log4j.ConsoleAppender
|
||||||
|
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
|
||||||
|
|
||||||
|
# use log4j NDC to replace %x with tenant domain / username
|
||||||
|
log4j.appender.Console.layout.ConversionPattern=%d{ISO8601} %x %-5p [%c{3}] [%t] %m%n
|
||||||
|
#log4j.appender.Console.layout.ConversionPattern=%d{ABSOLUTE} %-5p [%c] %m%n
|
||||||
|
|
||||||
|
###### File appender definition #######
|
||||||
|
log4j.appender.File=org.apache.log4j.DailyRollingFileAppender
|
||||||
|
log4j.appender.File.File=${app.log.dir}alfresco.log
|
||||||
|
log4j.appender.File.Append=true
|
||||||
|
log4j.appender.File.DatePattern='.'yyyy-MM-dd
|
||||||
|
log4j.appender.File.layout=org.apache.log4j.PatternLayout
|
||||||
|
log4j.appender.File.layout.ConversionPattern=%d{ABSOLUTE} %-5p [%c] %m%n
|
@@ -0,0 +1,66 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<groupId>${groupId}</groupId>
|
||||||
|
<artifactId>${artifactId}</artifactId>
|
||||||
|
<version>${version}</version>
|
||||||
|
<name>Quickstart of Alfresco and Share with DB and runner embedded</name>
|
||||||
|
<description>This All-in-One project allows to manage all the components involved in Alfresco development (Repo, Share, Solr, AMPs) in one project</description>
|
||||||
|
<packaging>pom</packaging>
|
||||||
|
|
||||||
|
<parent>
|
||||||
|
<groupId>org.alfresco.maven</groupId>
|
||||||
|
<artifactId>alfresco-sdk-parent</artifactId>
|
||||||
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
</parent>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
| SDK properties have sensible defaults in the SDK parent,
|
||||||
|
| but you can override the properties below to use another version.
|
||||||
|
| For more available properties see the alfresco-sdk-parent POM.
|
||||||
|
-->
|
||||||
|
<properties>
|
||||||
|
<alfresco.groupId>${alfresco_target_groupId}</alfresco.groupId>
|
||||||
|
<alfresco.version>${alfresco_target_version}</alfresco.version>
|
||||||
|
<app.log.root.level>WARN</app.log.root.level>
|
||||||
|
<alfresco.data.location>alf_data_dev</alfresco.data.location>
|
||||||
|
<!-- This controls which properties will be picked in src/test/properties for embedded run -->
|
||||||
|
<env>local</env>
|
||||||
|
</properties>
|
||||||
|
|
||||||
|
<!-- Here we realize the connection with the Alfresco selected platform (e.g.version and edition) -->
|
||||||
|
<dependencyManagement>
|
||||||
|
<dependencies>
|
||||||
|
<!-- This will import the dependencyManagement for all artifacts in the selected Alfresco plaftorm
|
||||||
|
(see http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Importing_Dependencies)
|
||||||
|
NOTE: You still need to define dependencies in your POM, but you can omit version as it's enforced by this dependencyManagement.
|
||||||
|
NOTE: It defaults to the latest version this SDK pom has been tested with, but alfresco version can/should be overridden in your project's pom
|
||||||
|
-->
|
||||||
|
<dependency>
|
||||||
|
<groupId>${alfresco.groupId}</groupId>
|
||||||
|
<artifactId>alfresco-platform-distribution</artifactId>
|
||||||
|
<version>${alfresco.version}</version>
|
||||||
|
<type>pom</type>
|
||||||
|
<scope>import</scope>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</dependencyManagement>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
No more repos are needed since they will be inherited by the parent POM.
|
||||||
|
This is needed to download the alfresco-plaftorm POM.
|
||||||
|
-->
|
||||||
|
<repositories>
|
||||||
|
<repository>
|
||||||
|
<id>alfresco-artifacts</id>
|
||||||
|
<url>https://artifacts.alfresco.com/nexus/content/groups/public</url>
|
||||||
|
</repository>
|
||||||
|
<repository>
|
||||||
|
<id>alfresco-artifacts-snapshots</id>
|
||||||
|
<url>https://artifacts.alfresco.com/nexus/content/groups/public-snapshots</url>
|
||||||
|
<snapshots>
|
||||||
|
<updatePolicy>never</updatePolicy>
|
||||||
|
</snapshots>
|
||||||
|
</repository>
|
||||||
|
</repositories>
|
||||||
|
</project>
|
@@ -0,0 +1,34 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">
|
||||||
|
|
||||||
|
<Configure id="Server" class="org.mortbay.jetty.Server">
|
||||||
|
<New id="myDataSource" class="org.mortbay.jetty.plus.naming.Resource">
|
||||||
|
<Arg>jdbc/dataSource</Arg>
|
||||||
|
<Arg>
|
||||||
|
<New class="${alfresco.db.datasource.class}">
|
||||||
|
<Set name="URL">${alfresco.db.url}</Set>
|
||||||
|
<Set name="User">${alfresco.db.username}</Set>
|
||||||
|
<Set name="Password">${alfresco.db.password}</Set>
|
||||||
|
</New>
|
||||||
|
</Arg>
|
||||||
|
</New>
|
||||||
|
<Call name="addConnector">
|
||||||
|
<Arg>
|
||||||
|
<New class="org.mortbay.jetty.nio.SelectChannelConnector">
|
||||||
|
<Set name="host">
|
||||||
|
<Property name="jetty.host" default="${runner.host}" />
|
||||||
|
</Set>
|
||||||
|
<Set name="port">
|
||||||
|
<Property name="jetty.port" default="${runner.port}" />
|
||||||
|
</Set>
|
||||||
|
<Set name="maxIdleTime">300000</Set>
|
||||||
|
<Set name="Acceptors">2</Set>
|
||||||
|
<Set name="statsOn">false</Set>
|
||||||
|
<Set name="confidentialPort">8443</Set>
|
||||||
|
<Set name="lowResourcesConnections">20000</Set>
|
||||||
|
<Set name="lowResourcesMaxIdleTime">5000</Set>
|
||||||
|
</New>
|
||||||
|
</Arg>
|
||||||
|
</Call>
|
||||||
|
|
||||||
|
</Configure>
|
@@ -0,0 +1,10 @@
|
|||||||
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
|
|
||||||
|
<!DOCTYPE web-app PUBLIC
|
||||||
|
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
|
||||||
|
"http://java.sun.com/dtd/web-app_2_3.dtd">
|
||||||
|
|
||||||
|
<web-app>
|
||||||
|
<display-name>Alfresco Runner</display-name>
|
||||||
|
<description>Alfresco Runner</description>
|
||||||
|
</web-app>
|
@@ -0,0 +1,72 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<artifactId>${artifactId}</artifactId>
|
||||||
|
<name>Alfresco and Share Runner</name>
|
||||||
|
<packaging>pom</packaging>
|
||||||
|
<description>Alfresco and Share Runner</description>
|
||||||
|
|
||||||
|
<parent>
|
||||||
|
<groupId>${groupId}</groupId>
|
||||||
|
<artifactId>${rootArtifactId}</artifactId>
|
||||||
|
<version>${version}</version>
|
||||||
|
</parent>
|
||||||
|
|
||||||
|
<profiles>
|
||||||
|
<profile>
|
||||||
|
<id>run</id>
|
||||||
|
<activation>
|
||||||
|
<property>
|
||||||
|
<name>run</name>
|
||||||
|
</property>
|
||||||
|
</activation>
|
||||||
|
<properties>
|
||||||
|
<alfresco.solr.dir>${project.basedir}/../solr/solr_home</alfresco.solr.dir>
|
||||||
|
<runner.host>127.0.0.1</runner.host>
|
||||||
|
<runner.port>8080</runner.port>
|
||||||
|
</properties>
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.mortbay.jetty</groupId>
|
||||||
|
<artifactId>maven-jetty-plugin</artifactId>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>run</id>
|
||||||
|
<goals><goal>run</goal></goals>
|
||||||
|
<phase>integration-test</phase>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
<configuration>
|
||||||
|
<!-- Following 3 properties set an empty ROOT context,
|
||||||
|
which is mandatory to run jetty:run plugin -->
|
||||||
|
<contextPath>/</contextPath>
|
||||||
|
<webAppSourceDirectory>.</webAppSourceDirectory>
|
||||||
|
<webXml>jetty/root-web.xml</webXml>
|
||||||
|
<contextHandlers>
|
||||||
|
<contextHandler implementation="org.mortbay.jetty.webapp.WebAppContext">
|
||||||
|
<war>${project.basedir}/../alfresco/target/alfresco.war</war>
|
||||||
|
<contextPath>/alfresco</contextPath>
|
||||||
|
</contextHandler>
|
||||||
|
<contextHandler implementation="org.mortbay.jetty.webapp.WebAppContext">
|
||||||
|
<war>${alfresco.solr.dir}/apache-solr-1.4.1-overlay.war</war>
|
||||||
|
<contextPath>/solr</contextPath>
|
||||||
|
</contextHandler>
|
||||||
|
<contextHandler implementation="org.mortbay.jetty.webapp.WebAppContext">
|
||||||
|
<war>${project.basedir}/../share/target/share.war</war>
|
||||||
|
<contextPath>/share</contextPath>
|
||||||
|
</contextHandler>
|
||||||
|
</contextHandlers>
|
||||||
|
<systemProperties>
|
||||||
|
<systemProperty>
|
||||||
|
<name>solr.solr.home</name>
|
||||||
|
<value>${alfresco.solr.dir}</value>
|
||||||
|
</systemProperty>
|
||||||
|
</systemProperties>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
</profile>
|
||||||
|
</profiles>
|
||||||
|
</project>
|
@@ -0,0 +1,64 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<artifactId>${artifactId}</artifactId>
|
||||||
|
<name>Alfresco Share Client</name>
|
||||||
|
<packaging>war</packaging>
|
||||||
|
<description>Alfresco Share Client</description>
|
||||||
|
|
||||||
|
<parent>
|
||||||
|
<groupId>${groupId}</groupId>
|
||||||
|
<artifactId>${rootArtifactId}</artifactId>
|
||||||
|
<version>${version}</version>
|
||||||
|
</parent>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>${alfresco.groupId}</groupId>
|
||||||
|
<artifactId>share</artifactId>
|
||||||
|
<type>war</type>
|
||||||
|
</dependency>
|
||||||
|
<!-- Demonstrating the usage of a well known GA AMP (Web Quick Start
|
||||||
|
Share component) -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>${alfresco.groupId}</groupId>
|
||||||
|
<artifactId>alfresco-wcm-quickstart-share</artifactId>
|
||||||
|
<version>${alfresco.version}</version>
|
||||||
|
<type>amp</type>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<artifactId>maven-war-plugin</artifactId>
|
||||||
|
<configuration>
|
||||||
|
<!-- Here is can control the order of overlay of your (WAR, AMP, etc.) dependencies
|
||||||
|
| NOTE: At least one WAR dependency must be uncompressed first
|
||||||
|
| NOTE: In order to have a dependency effectively added to the WAR you need to
|
||||||
|
| explicitly mention it in the overlay section.
|
||||||
|
| NOTE: First-win resource strategy is used by the WAR plugin
|
||||||
|
-->
|
||||||
|
<overlays>
|
||||||
|
<!-- The current project customizations -->
|
||||||
|
<overlay/>
|
||||||
|
<!-- The Share WAR -->
|
||||||
|
<overlay>
|
||||||
|
<groupId>${alfresco.groupId}</groupId>
|
||||||
|
<artifactId>share</artifactId>
|
||||||
|
<type>war</type>
|
||||||
|
<!-- To allow inclusion of META-INF -->
|
||||||
|
<excludes/>
|
||||||
|
</overlay>
|
||||||
|
<!-- Add / order your AMPs here -->
|
||||||
|
<overlay>
|
||||||
|
<groupId>${alfresco.groupId}</groupId>
|
||||||
|
<artifactId>alfresco-wcm-quickstart-share</artifactId>
|
||||||
|
<type>amp</type>
|
||||||
|
</overlay>
|
||||||
|
</overlays>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
</project>
|
@@ -0,0 +1,8 @@
|
|||||||
|
# SHARE client environment dependent properties (local build)
|
||||||
|
share.server.scheme=http
|
||||||
|
share.server.name=localhost
|
||||||
|
share.server.port=${jetty.port}
|
||||||
|
alfresco.server.scheme=http
|
||||||
|
alfresco.server.name=localhost
|
||||||
|
alfresco.server.port=${jetty.port}
|
||||||
|
alfresco.webapp.name=alfresco
|
@@ -0,0 +1,112 @@
|
|||||||
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
|
<!-- This is a sample configuration file from Alfresco Community 4.2.b - Please adapt to your version -->
|
||||||
|
<beans xmlns="http://www.springframework.org/schema/beans"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xmlns:hz="http://www.hazelcast.com/schema/config"
|
||||||
|
xsi:schemaLocation="http://www.springframework.org/schema/beans
|
||||||
|
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
|
||||||
|
http://www.hazelcast.com/schema/config
|
||||||
|
http://www.hazelcast.com/schema/config/hazelcast-spring.xsd">
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Hazelcast distributed messaging configuration - Share web-tier cluster config (3.4.8 and 4.0.1)
|
||||||
|
- see http://www.hazelcast.com/docs.jsp
|
||||||
|
- and specifically http://www.hazelcast.com/docs/1.9.4/manual/single_html/#SpringIntegration
|
||||||
|
-->
|
||||||
|
<!-- Configure cluster to use either Multicast or direct TCP-IP messaging - multicast is default -->
|
||||||
|
<!-- Optionally specify network interfaces - server machines likely to have more than one interface -->
|
||||||
|
<!-- The messaging topic - the "name" is also used by the persister config below -->
|
||||||
|
<!--
|
||||||
|
<hz:topic id="topic" instance-ref="webframework.cluster.slingshot" name="slingshot-topic"/>
|
||||||
|
<hz:hazelcast id="webframework.cluster.slingshot">
|
||||||
|
<hz:config>
|
||||||
|
<hz:group name="slingshot" password="alfresco"/>
|
||||||
|
<hz:network port="5801" port-auto-increment="true">
|
||||||
|
<hz:join>
|
||||||
|
<hz:multicast enabled="true"
|
||||||
|
multicast-group="224.2.2.5"
|
||||||
|
multicast-port="54327"/>
|
||||||
|
<hz:tcp-ip enabled="false">
|
||||||
|
<hz:members></hz:members>
|
||||||
|
</hz:tcp-ip>
|
||||||
|
</hz:join>
|
||||||
|
<hz:interfaces enabled="false">
|
||||||
|
<hz:interface>192.168.1.*</hz:interface>
|
||||||
|
</hz:interfaces>
|
||||||
|
</hz:network>
|
||||||
|
</hz:config>
|
||||||
|
</hz:hazelcast>
|
||||||
|
|
||||||
|
<bean id="webframework.slingshot.persister.remote" class="org.alfresco.web.site.ClusterAwarePathStoreObjectPersister" parent="webframework.sitedata.persister.abstract">
|
||||||
|
<property name="store" ref="webframework.webapp.store.remote" />
|
||||||
|
<property name="pathPrefix"><value>alfresco/site-data/${objectTypeIds}</value></property>
|
||||||
|
<property name="hazelcastInstance" ref="webframework.cluster.slingshot" />
|
||||||
|
<property name="hazelcastTopicName"><value>slingshot-topic</value></property>
|
||||||
|
</bean>
|
||||||
|
|
||||||
|
<bean id="webframework.factory.requestcontext.servlet" class="org.alfresco.web.site.ClusterAwareRequestContextFactory" parent="webframework.factory.base">
|
||||||
|
<property name="linkBuilderFactory" ref="webframework.factory.linkbuilder.servlet" />
|
||||||
|
<property name="extensibilityModuleHandler" ref="webscripts.extensibility.handler" />
|
||||||
|
<property name="clusterObjectPersister" ref="webframework.slingshot.persister.remote" />
|
||||||
|
</bean>
|
||||||
|
-->
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Legacy Share web-tier cluster config (3.4.7 and 4.0.0) -->
|
||||||
|
<!--
|
||||||
|
<bean id="webframework.slingshot.persister.remote" class="org.springframework.extensions.surf.persister.PathStoreObjectPersister" parent="webframework.sitedata.persister.abstract">
|
||||||
|
<property name="store" ref="webframework.webapp.store.remote" />
|
||||||
|
<property name="pathPrefix"><value>alfresco/site-data/${objectTypeIds}</value></property>
|
||||||
|
<property name="noncachableObjectTypes">
|
||||||
|
<set>
|
||||||
|
<value>page</value>
|
||||||
|
<value>component</value>
|
||||||
|
<value>configuration</value>
|
||||||
|
</set>
|
||||||
|
</property>
|
||||||
|
</bean>
|
||||||
|
-->
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Override WebScripts searchpath - to include remote store -->
|
||||||
|
<!-- This enables remote component load via a central Alfresco server -->
|
||||||
|
<!--
|
||||||
|
<bean id="webframework.webscripts.store.alfresco.remote" parent="webframework.store.remote.abstract">
|
||||||
|
<property name="path"><value>alfresco/site-webscripts</value></property>
|
||||||
|
</bean>
|
||||||
|
<bean id="webframework.webscripts.searchpath" class="org.springframework.extensions.webscripts.SearchPath">
|
||||||
|
<property name="searchPath">
|
||||||
|
<list>
|
||||||
|
<ref bean="webframework.webscripts.store.alfresco.remote" />
|
||||||
|
<ref bean="webframework.webscripts.store.alfresco.custom" />
|
||||||
|
<ref bean="webframework.webscripts.store.alfresco.classpath" />
|
||||||
|
<ref bean="webframework.webscripts.store.classpath" />
|
||||||
|
<ref bean="webscripts.store.alfresco" />
|
||||||
|
<ref bean="webscripts.store" />
|
||||||
|
</list>
|
||||||
|
</property>
|
||||||
|
</bean>
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!-- Override Templates and Scripts searchpath - to include remote store -->
|
||||||
|
<!-- This enables remote component load via a central Alfresco server -->
|
||||||
|
<!--
|
||||||
|
<bean id="webframework.templates.store.alfresco.remote" parent="webframework.store.remote.abstract">
|
||||||
|
<property name="path"><value>alfresco/templates</value></property>
|
||||||
|
</bean>
|
||||||
|
<bean id="webframework.templates.searchpath" class="org.springframework.extensions.webscripts.SearchPath">
|
||||||
|
<property name="searchPath">
|
||||||
|
<list>
|
||||||
|
<ref bean="webframework.templates.store.alfresco.remote" />
|
||||||
|
<ref bean="webframework.templates.store.alfresco.custom" />
|
||||||
|
<ref bean="webframework.webscripts.store.alfresco.custom" />
|
||||||
|
<ref bean="webframework.templates.store.alfresco.classpath" />
|
||||||
|
<ref bean="webframework.webscripts.store.alfresco.classpath" />
|
||||||
|
<ref bean="webframework.templates.store.classpath" />
|
||||||
|
<ref bean="webframework.webscripts.store.classpath" />
|
||||||
|
</list>
|
||||||
|
</property>
|
||||||
|
</bean>
|
||||||
|
-->
|
||||||
|
|
||||||
|
</beans>
|
@@ -0,0 +1,346 @@
|
|||||||
|
<!-- This is a sample configuration file from Alfresco Community 4.2.b - Please adapt to your version -->
|
||||||
|
<alfresco-config>
|
||||||
|
|
||||||
|
<!-- Global config section -->
|
||||||
|
<config replace="true">
|
||||||
|
<flags>
|
||||||
|
<!--
|
||||||
|
Developer debugging setting to turn on DEBUG mode for client scripts in the browser
|
||||||
|
-->
|
||||||
|
<client-debug>false</client-debug>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
LOGGING can always be toggled at runtime when in DEBUG mode (Ctrl, Ctrl, Shift, Shift).
|
||||||
|
This flag automatically activates logging on page load.
|
||||||
|
-->
|
||||||
|
<client-debug-autologging>false</client-debug-autologging>
|
||||||
|
</flags>
|
||||||
|
</config>
|
||||||
|
|
||||||
|
<config evaluator="string-compare" condition="WebFramework">
|
||||||
|
<web-framework>
|
||||||
|
<!-- SpringSurf Autowire Runtime Settings -->
|
||||||
|
<!--
|
||||||
|
Developers can set mode to 'development' to disable; SpringSurf caches,
|
||||||
|
FreeMarker template caching and Rhino JavaScript compilation.
|
||||||
|
-->
|
||||||
|
<autowire>
|
||||||
|
<!-- Pick the mode: "production" or "development" -->
|
||||||
|
<mode>production</mode>
|
||||||
|
</autowire>
|
||||||
|
|
||||||
|
<!-- Allows extension modules with <auto-deploy> set to true to be automatically deployed -->
|
||||||
|
<module-deployment>
|
||||||
|
<mode>manual</mode>
|
||||||
|
<enable-auto-deploy-modules>true</enable-auto-deploy-modules>
|
||||||
|
</module-deployment>
|
||||||
|
</web-framework>
|
||||||
|
</config>
|
||||||
|
|
||||||
|
<config evaluator="string-compare" condition="Replication">
|
||||||
|
<share-urls>
|
||||||
|
<!--
|
||||||
|
To discover a Repository Id, browse to the remote server's CMIS landing page at:
|
||||||
|
http://{server}:{port}/alfresco/service/cmis/index.html
|
||||||
|
The Repository Id field is found under the "CMIS Repository Information" expandable panel.
|
||||||
|
|
||||||
|
Example config entry:
|
||||||
|
<share-url repositoryId="622f9533-2a1e-48fe-af4e-ee9e41667ea4">http://new-york-office:8080/share/</share-url>
|
||||||
|
-->
|
||||||
|
</share-urls>
|
||||||
|
</config>
|
||||||
|
|
||||||
|
<!-- Document Library config section -->
|
||||||
|
<config evaluator="string-compare" condition="DocumentLibrary" replace="true">
|
||||||
|
|
||||||
|
<tree>
|
||||||
|
<!--
|
||||||
|
Whether the folder Tree component should enumerate child folders or not.
|
||||||
|
This is a relatively expensive operation, so should be set to "false" for Repositories with broad folder structures.
|
||||||
|
-->
|
||||||
|
<evaluate-child-folders>false</evaluate-child-folders>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Optionally limit the number of folders shown in treeview throughout Share.
|
||||||
|
-->
|
||||||
|
<maximum-folder-count>-1</maximum-folder-count>
|
||||||
|
</tree>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Used by the "Manage Aspects" action
|
||||||
|
|
||||||
|
For custom aspects, remember to also add the relevant i18n string(s)
|
||||||
|
cm_myaspect=My Aspect
|
||||||
|
-->
|
||||||
|
<aspects>
|
||||||
|
<!-- Aspects that a user can see -->
|
||||||
|
<visible>
|
||||||
|
<aspect name="cm:generalclassifiable" />
|
||||||
|
<aspect name="cm:complianceable" />
|
||||||
|
<aspect name="cm:dublincore" />
|
||||||
|
<aspect name="cm:effectivity" />
|
||||||
|
<aspect name="cm:summarizable" />
|
||||||
|
<aspect name="cm:versionable" />
|
||||||
|
<aspect name="cm:templatable" />
|
||||||
|
<aspect name="cm:emailed" />
|
||||||
|
<aspect name="emailserver:aliasable" />
|
||||||
|
<aspect name="cm:taggable" />
|
||||||
|
<aspect name="app:inlineeditable" />
|
||||||
|
<aspect name="gd:googleEditable" />
|
||||||
|
<aspect name="cm:geographic" />
|
||||||
|
<aspect name="exif:exif" />
|
||||||
|
</visible>
|
||||||
|
|
||||||
|
<!-- Aspects that a user can add. Same as "visible" if left empty -->
|
||||||
|
<addable>
|
||||||
|
</addable>
|
||||||
|
|
||||||
|
<!-- Aspects that a user can remove. Same as "visible" if left empty -->
|
||||||
|
<removeable>
|
||||||
|
</removeable>
|
||||||
|
</aspects>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Used by the "Change Type" action
|
||||||
|
|
||||||
|
Define valid subtypes using the following example:
|
||||||
|
<type name="cm:content">
|
||||||
|
<subtype name="cm:mysubtype" />
|
||||||
|
</type>
|
||||||
|
|
||||||
|
Remember to also add the relevant i18n string(s):
|
||||||
|
cm_mysubtype=My SubType
|
||||||
|
-->
|
||||||
|
<types>
|
||||||
|
<type name="cm:content">
|
||||||
|
</type>
|
||||||
|
|
||||||
|
<type name="cm:folder">
|
||||||
|
</type>
|
||||||
|
</types>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
If set, will present a WebDAV link for the current item on the Document and Folder details pages.
|
||||||
|
Also used to generate the "View in Alfresco Explorer" action for folders.
|
||||||
|
-->
|
||||||
|
<repository-url>http://localhost:8080/alfresco</repository-url>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Google Docs™ integration
|
||||||
|
-->
|
||||||
|
<google-docs>
|
||||||
|
<!--
|
||||||
|
Enable/disable the Google Docs UI integration (Extra types on Create Content menu, Google Docs actions).
|
||||||
|
-->
|
||||||
|
<enabled>false</enabled>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
The mimetypes of documents Google Docs allows you to create via the Share interface.
|
||||||
|
The I18N label is created from the "type" attribute, e.g. google-docs.doc=Google Docs™ Document
|
||||||
|
-->
|
||||||
|
<creatable-types>
|
||||||
|
<creatable type="doc">application/msword</creatable>
|
||||||
|
<creatable type="xls">application/vnd.ms-excel</creatable>
|
||||||
|
<creatable type="ppt">application/vnd.ms-powerpoint</creatable>
|
||||||
|
</creatable-types>
|
||||||
|
</google-docs>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
File upload configuration
|
||||||
|
-->
|
||||||
|
<file-upload>
|
||||||
|
<!--
|
||||||
|
Adobe Flash™
|
||||||
|
In certain environments, an HTTP request originating from Flash cannot be authenticated using an existing session.
|
||||||
|
See: http://bugs.adobe.com/jira/browse/FP-4830
|
||||||
|
For these cases, it is useful to disable the Flash-based uploader for Share Document Libraries.
|
||||||
|
-->
|
||||||
|
<adobe-flash-enabled>true</adobe-flash-enabled>
|
||||||
|
</file-upload>
|
||||||
|
</config>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Custom DocLibActions config section -->
|
||||||
|
<config evaluator="string-compare" condition="DocLibActions">
|
||||||
|
<actionGroups>
|
||||||
|
<actionGroup id="document-browse">
|
||||||
|
|
||||||
|
<!-- Simple Repo Actions -->
|
||||||
|
<!--
|
||||||
|
<action index="340" id="document-extract-metadata" />
|
||||||
|
<action index="350" id="document-increment-counter" />
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!-- Dialog Repo Actions -->
|
||||||
|
<!--
|
||||||
|
<action index="360" id="document-transform" />
|
||||||
|
<action index="370" id="document-transform-image" />
|
||||||
|
<action index="380" id="document-execute-script" />
|
||||||
|
-->
|
||||||
|
|
||||||
|
</actionGroup>
|
||||||
|
</actionGroups>
|
||||||
|
</config>
|
||||||
|
|
||||||
|
<!-- Global folder picker config section -->
|
||||||
|
<config evaluator="string-compare" condition="GlobalFolder">
|
||||||
|
<siteTree>
|
||||||
|
<container type="cm:folder">
|
||||||
|
<!-- Use a specific label for this container type in the tree -->
|
||||||
|
<rootLabel>location.path.documents</rootLabel>
|
||||||
|
<!-- Use a specific uri to retreive the child nodes for this container type in the tree -->
|
||||||
|
<uri>slingshot/doclib/treenode/site/{site}/{container}{path}?children={evaluateChildFoldersSite}&max={maximumFolderCountSite}</uri>
|
||||||
|
</container>
|
||||||
|
</siteTree>
|
||||||
|
</config>
|
||||||
|
|
||||||
|
<!-- Repository Library config section -->
|
||||||
|
<config evaluator="string-compare" condition="RepositoryLibrary" replace="true">
|
||||||
|
<!--
|
||||||
|
Root nodeRef or xpath expression for top-level folder.
|
||||||
|
e.g. alfresco://user/home, /app:company_home/st:sites/cm:site1
|
||||||
|
If using an xpath expression, ensure it is properly ISO9075 encoded here.
|
||||||
|
-->
|
||||||
|
<root-node>alfresco://company/home</root-node>
|
||||||
|
|
||||||
|
<tree>
|
||||||
|
<!--
|
||||||
|
Whether the folder Tree component should enumerate child folders or not.
|
||||||
|
This is a relatively expensive operation, so should be set to "false" for Repositories with broad folder structures.
|
||||||
|
-->
|
||||||
|
<evaluate-child-folders>false</evaluate-child-folders>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Optionally limit the number of folders shown in treeview throughout Share.
|
||||||
|
-->
|
||||||
|
<maximum-folder-count>500</maximum-folder-count>
|
||||||
|
</tree>
|
||||||
|
</config>
|
||||||
|
|
||||||
|
<!-- Kerberos settings -->
|
||||||
|
<!-- To enable kerberos rename this condition to "Kerberos" -->
|
||||||
|
<config evaluator="string-compare" condition="KerberosDisabled" replace="true">
|
||||||
|
<kerberos>
|
||||||
|
<!--
|
||||||
|
Password for HTTP service account.
|
||||||
|
The account name *must* be built from the HTTP server name, in the format :
|
||||||
|
HTTP/<server_name>@<realm>
|
||||||
|
(NB this is because the web browser requests an ST for the
|
||||||
|
HTTP/<server_name> principal in the current realm, so if we're to decode
|
||||||
|
that ST, it has to match.)
|
||||||
|
-->
|
||||||
|
<password>secret</password>
|
||||||
|
<!--
|
||||||
|
Kerberos realm and KDC address.
|
||||||
|
-->
|
||||||
|
<realm>ALFRESCO.ORG</realm>
|
||||||
|
<!--
|
||||||
|
Service Principal Name to use on the repository tier.
|
||||||
|
This must be like: HTTP/host.name@REALM
|
||||||
|
-->
|
||||||
|
<endpoint-spn>HTTP/repository.server.com@ALFRESCO.ORG</endpoint-spn>
|
||||||
|
<!--
|
||||||
|
JAAS login configuration entry name.
|
||||||
|
-->
|
||||||
|
<config-entry>ShareHTTP</config-entry>
|
||||||
|
</kerberos>
|
||||||
|
</config>
|
||||||
|
|
||||||
|
<!-- example port config used to access remote Alfresco server (default is 8080) -->
|
||||||
|
<!--
|
||||||
|
<config evaluator="string-compare" condition="Remote">
|
||||||
|
<remote>
|
||||||
|
<endpoint>
|
||||||
|
<id>alfresco-noauth</id>
|
||||||
|
<name>Alfresco - unauthenticated access</name>
|
||||||
|
<description>Access to Alfresco Repository WebScripts that do not require authentication</description>
|
||||||
|
<connector-id>alfresco</connector-id>
|
||||||
|
<endpoint-url>http://localhost:8080/alfresco/s</endpoint-url>
|
||||||
|
<identity>none</identity>
|
||||||
|
</endpoint>
|
||||||
|
|
||||||
|
<endpoint>
|
||||||
|
<id>alfresco</id>
|
||||||
|
<name>Alfresco - user access</name>
|
||||||
|
<description>Access to Alfresco Repository WebScripts that require user authentication</description>
|
||||||
|
<connector-id>alfresco</connector-id>
|
||||||
|
<endpoint-url>http://localhost:8080/alfresco/s</endpoint-url>
|
||||||
|
<identity>user</identity>
|
||||||
|
</endpoint>
|
||||||
|
|
||||||
|
<endpoint>
|
||||||
|
<id>alfresco-feed</id>
|
||||||
|
<name>Alfresco Feed</name>
|
||||||
|
<description>Alfresco Feed - supports basic HTTP authentication via the EndPointProxyServlet</description>
|
||||||
|
<connector-id>http</connector-id>
|
||||||
|
<endpoint-url>http://localhost:8080/alfresco/s</endpoint-url>
|
||||||
|
<basic-auth>true</basic-auth>
|
||||||
|
<identity>user</identity>
|
||||||
|
</endpoint>
|
||||||
|
|
||||||
|
<endpoint>
|
||||||
|
<id>activiti-admin</id>
|
||||||
|
<name>Activiti Admin UI - user access</name>
|
||||||
|
<description>Access to Activiti Admin UI, that requires user authentication</description>
|
||||||
|
<connector-id>activiti-admin-connector</connector-id>
|
||||||
|
<endpoint-url>http://localhost:8080/alfresco/activiti-admin</endpoint-url>
|
||||||
|
<identity>user</identity>
|
||||||
|
</endpoint>
|
||||||
|
</remote>
|
||||||
|
</config>
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Overriding endpoints to reference an Alfresco server with external SSO enabled
|
||||||
|
NOTE: If utilising a load balancer between web-tier and repository cluster, the "sticky
|
||||||
|
sessions" feature of your load balancer must be used.
|
||||||
|
NOTE: If alfresco server location is not localhost:8080 then also combine changes from the
|
||||||
|
"example port config" section below.
|
||||||
|
*Optional* keystore contains SSL client certificate + trusted CAs.
|
||||||
|
Used to authenticate share to an external SSO system such as CAS
|
||||||
|
Remove the keystore section if not required i.e. for NTLM.
|
||||||
|
|
||||||
|
NOTE: For Kerberos SSO rename the "KerberosDisabled" condition above to "Kerberos"
|
||||||
|
|
||||||
|
NOTE: For external SSO, switch the endpoint connector to "AlfrescoHeader" and set
|
||||||
|
the userHeader to the name of the HTTP header that the external SSO
|
||||||
|
uses to provide the authenticated user name.
|
||||||
|
-->
|
||||||
|
<!--
|
||||||
|
<config evaluator="string-compare" condition="Remote">
|
||||||
|
<remote>
|
||||||
|
<keystore>
|
||||||
|
<path>alfresco/web-extension/alfresco-system.p12</path>
|
||||||
|
<type>pkcs12</type>
|
||||||
|
<password>alfresco-system</password>
|
||||||
|
</keystore>
|
||||||
|
|
||||||
|
<connector>
|
||||||
|
<id>alfrescoCookie</id>
|
||||||
|
<name>Alfresco Connector</name>
|
||||||
|
<description>Connects to an Alfresco instance using cookie-based authentication</description>
|
||||||
|
<class>org.alfresco.web.site.servlet.SlingshotAlfrescoConnector</class>
|
||||||
|
</connector>
|
||||||
|
|
||||||
|
<connector>
|
||||||
|
<id>alfrescoHeader</id>
|
||||||
|
<name>Alfresco Connector</name>
|
||||||
|
<description>Connects to an Alfresco instance using header and cookie-based authentication</description>
|
||||||
|
<class>org.alfresco.web.site.servlet.SlingshotAlfrescoConnector</class>
|
||||||
|
<userHeader>SsoUserHeader</userHeader>
|
||||||
|
</connector>
|
||||||
|
|
||||||
|
<endpoint>
|
||||||
|
<id>alfresco</id>
|
||||||
|
<name>Alfresco - user access</name>
|
||||||
|
<description>Access to Alfresco Repository WebScripts that require user authentication</description>
|
||||||
|
<connector-id>alfrescoCookie</connector-id>
|
||||||
|
<endpoint-url>http://localhost:8080/alfresco/wcs</endpoint-url>
|
||||||
|
<identity>user</identity>
|
||||||
|
<external-auth>true</external-auth>
|
||||||
|
</endpoint>
|
||||||
|
</remote>
|
||||||
|
</config>
|
||||||
|
-->
|
||||||
|
|
||||||
|
</alfresco-config>
|
@@ -0,0 +1,262 @@
|
|||||||
|
# Set root logger level to error
|
||||||
|
log4j.rootLogger=${app.log.root.level}, Console, File
|
||||||
|
|
||||||
|
###### Console appender definition #######
|
||||||
|
|
||||||
|
# All outputs currently set to be a ConsoleAppender.
|
||||||
|
log4j.appender.Console=org.apache.log4j.ConsoleAppender
|
||||||
|
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
|
||||||
|
|
||||||
|
# use log4j NDC to replace %x with tenant domain / username
|
||||||
|
log4j.appender.Console.layout.ConversionPattern=%d{ISO8601} %x %-5p [%c{3}] [%t] %m%n
|
||||||
|
#log4j.appender.Console.layout.ConversionPattern=%d{ABSOLUTE} %-5p [%c] %m%n
|
||||||
|
|
||||||
|
###### File appender definition #######
|
||||||
|
log4j.appender.File=org.apache.log4j.DailyRollingFileAppender
|
||||||
|
log4j.appender.File.File=${app.log.dir}share.log
|
||||||
|
log4j.appender.File.Append=true
|
||||||
|
log4j.appender.File.DatePattern='.'yyyy-MM-dd
|
||||||
|
log4j.appender.File.layout=org.apache.log4j.PatternLayout
|
||||||
|
log4j.appender.File.layout.ConversionPattern=%d{ABSOLUTE} %-5p [%c] %m%n
|
||||||
|
|
||||||
|
###### Hibernate specific appender definition #######
|
||||||
|
#log4j.appender.file=org.apache.log4j.FileAppender
|
||||||
|
#log4j.appender.file.File=hibernate.log
|
||||||
|
#log4j.appender.file.layout=org.apache.log4j.PatternLayout
|
||||||
|
#log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
|
||||||
|
|
||||||
|
###### Log level overrides #######
|
||||||
|
|
||||||
|
# Commented-in loggers will be exposed as JMX MBeans (refer to org.alfresco.repo.admin.Log4JHierarchyInit)
|
||||||
|
# Hence, generally useful loggers should be listed with at least ERROR level to allow simple runtime
|
||||||
|
# control of the level via a suitable JMX Console. Also, any other loggers can be added transiently via
|
||||||
|
# Log4j addLoggerMBean as long as the logger exists and has been loaded.
|
||||||
|
|
||||||
|
# Hibernate
|
||||||
|
log4j.logger.org.hibernate=error
|
||||||
|
log4j.logger.org.hibernate.util.JDBCExceptionReporter=fatal
|
||||||
|
log4j.logger.org.hibernate.event.def.AbstractFlushingEventListener=fatal
|
||||||
|
log4j.logger.org.hibernate.type=warn
|
||||||
|
log4j.logger.org.hibernate.cfg.SettingsFactory=warn
|
||||||
|
|
||||||
|
# Spring
|
||||||
|
log4j.logger.org.springframework=warn
|
||||||
|
# Turn off Spring remoting warnings that should really be info or debug.
|
||||||
|
log4j.logger.org.springframework.remoting.support=error
|
||||||
|
log4j.logger.org.springframework.util=error
|
||||||
|
|
||||||
|
# Axis/WSS4J
|
||||||
|
log4j.logger.org.apache.axis=info
|
||||||
|
log4j.logger.org.apache.ws=info
|
||||||
|
|
||||||
|
# CXF
|
||||||
|
log4j.logger.org.apache.cxf=error
|
||||||
|
|
||||||
|
# MyFaces
|
||||||
|
log4j.logger.org.apache.myfaces.util.DebugUtils=info
|
||||||
|
log4j.logger.org.apache.myfaces.el.VariableResolverImpl=error
|
||||||
|
log4j.logger.org.apache.myfaces.application.jsp.JspViewHandlerImpl=error
|
||||||
|
log4j.logger.org.apache.myfaces.taglib=error
|
||||||
|
|
||||||
|
# OpenOfficeConnection
|
||||||
|
log4j.logger.net.sf.jooreports.openoffice.connection=fatal
|
||||||
|
|
||||||
|
# log prepared statement cache activity ###
|
||||||
|
log4j.logger.org.hibernate.ps.PreparedStatementCache=info
|
||||||
|
|
||||||
|
# Alfresco
|
||||||
|
log4j.logger.org.alfresco=error
|
||||||
|
log4j.logger.org.alfresco.repo.admin=info
|
||||||
|
log4j.logger.org.alfresco.repo.cache.TransactionalCache=warn
|
||||||
|
log4j.logger.org.alfresco.repo.model.filefolder=warn
|
||||||
|
log4j.logger.org.alfresco.repo.tenant=info
|
||||||
|
log4j.logger.org.alfresco.repo.avm=info
|
||||||
|
log4j.logger.org.alfresco.config=warn
|
||||||
|
log4j.logger.org.alfresco.config.JndiObjectFactoryBean=warn
|
||||||
|
log4j.logger.org.alfresco.config.JBossEnabledWebApplicationContext=warn
|
||||||
|
log4j.logger.org.alfresco.repo.management.subsystems=warn
|
||||||
|
log4j.logger.org.alfresco.repo.management.subsystems.ChildApplicationContextFactory=info
|
||||||
|
log4j.logger.org.alfresco.repo.management.subsystems.ChildApplicationContextFactory$ChildApplicationContext=warn
|
||||||
|
log4j.logger.org.alfresco.repo.security.sync=info
|
||||||
|
log4j.logger.org.alfresco.repo.security.person=info
|
||||||
|
|
||||||
|
log4j.logger.org.alfresco.sample=info
|
||||||
|
log4j.logger.org.alfresco.web=info
|
||||||
|
#log4j.logger.org.alfresco.web.app.AlfrescoNavigationHandler=debug
|
||||||
|
#log4j.logger.org.alfresco.web.ui.repo.component.UIActions=debug
|
||||||
|
#log4j.logger.org.alfresco.web.ui.repo.tag.PageTag=debug
|
||||||
|
#log4j.logger.org.alfresco.web.bean.clipboard=debug
|
||||||
|
log4j.logger.org.alfresco.repo.webservice=info
|
||||||
|
log4j.logger.org.alfresco.service.descriptor.DescriptorService=info
|
||||||
|
#log4j.logger.org.alfresco.web.page=debug
|
||||||
|
|
||||||
|
log4j.logger.org.alfresco.repo.importer.ImporterBootstrap=error
|
||||||
|
#log4j.logger.org.alfresco.repo.importer.ImporterBootstrap=info
|
||||||
|
|
||||||
|
log4j.logger.org.alfresco.web.ui.common.Utils=error
|
||||||
|
#log4j.logger.org.alfresco.web.ui.common.Utils=info
|
||||||
|
|
||||||
|
log4j.logger.org.alfresco.repo.admin.patch.PatchExecuter=info
|
||||||
|
log4j.logger.org.alfresco.repo.domain.patch.ibatis.PatchDAOImpl=info
|
||||||
|
|
||||||
|
# Specific patches
|
||||||
|
log4j.logger.org.alfresco.repo.admin.patch.impl.DeploymentMigrationPatch=info
|
||||||
|
log4j.logger.org.alfresco.repo.version.VersionMigrator=info
|
||||||
|
log4j.logger.org.alfresco.repo.admin.patch.impl.ResetWCMToGroupBasedPermissionsPatch=info
|
||||||
|
|
||||||
|
log4j.logger.org.alfresco.repo.module.ModuleServiceImpl=info
|
||||||
|
log4j.logger.org.alfresco.repo.domain.schema.SchemaBootstrap=info
|
||||||
|
log4j.logger.org.alfresco.repo.admin.ConfigurationChecker=info
|
||||||
|
log4j.logger.org.alfresco.repo.node.index.AbstractReindexComponent=warn
|
||||||
|
log4j.logger.org.alfresco.repo.node.index.IndexTransactionTracker=warn
|
||||||
|
log4j.logger.org.alfresco.repo.node.index.FullIndexRecoveryComponent=info
|
||||||
|
log4j.logger.org.alfresco.repo.node.index.AVMFullIndexRecoveryComponent=info
|
||||||
|
log4j.logger.org.alfresco.util.OpenOfficeConnectionTester=info
|
||||||
|
log4j.logger.org.alfresco.repo.node.db.hibernate.HibernateNodeDaoServiceImpl=warn
|
||||||
|
log4j.logger.org.alfresco.repo.domain.hibernate.DirtySessionMethodInterceptor=warn
|
||||||
|
log4j.logger.org.alfresco.repo.transaction.RetryingTransactionHelper=warn
|
||||||
|
log4j.logger.org.alfresco.util.transaction.SpringAwareUserTransaction.trace=warn
|
||||||
|
log4j.logger.org.alfresco.util.AbstractTriggerBean=warn
|
||||||
|
log4j.logger.org.alfresco.enterprise.repo.cache.cluster.KeepAliveHeartbeatReceiver=info
|
||||||
|
log4j.logger.org.alfresco.repo.version.Version2ServiceImpl=warn
|
||||||
|
|
||||||
|
#log4j.logger.org.alfresco.web.app.DebugPhaseListener=debug
|
||||||
|
|
||||||
|
log4j.logger.org.alfresco.repo.workflow=info
|
||||||
|
|
||||||
|
# CIFS server debugging
|
||||||
|
log4j.logger.org.alfresco.smb.protocol=error
|
||||||
|
#log4j.logger.org.alfresco.smb.protocol.auth=debug
|
||||||
|
#log4j.logger.org.alfresco.acegi=debug
|
||||||
|
|
||||||
|
# FTP server debugging
|
||||||
|
log4j.logger.org.alfresco.ftp.protocol=error
|
||||||
|
#log4j.logger.org.alfresco.ftp.server=debug
|
||||||
|
|
||||||
|
# WebDAV debugging
|
||||||
|
#log4j.logger.org.alfresco.webdav.protocol=debug
|
||||||
|
log4j.logger.org.alfresco.webdav.protocol=error
|
||||||
|
|
||||||
|
# NTLM servlet filters
|
||||||
|
#log4j.logger.org.alfresco.web.app.servlet.NTLMAuthenticationFilter=debug
|
||||||
|
#log4j.logger.org.alfresco.repo.webdav.auth.NTLMAuthenticationFilter=debug
|
||||||
|
|
||||||
|
# Kerberos servlet filters
|
||||||
|
#log4j.logger.org.alfresco.web.app.servlet.KerberosAuthenticationFilter=debug
|
||||||
|
#log4j.logger.org.alfresco.repo.webdav.auth.KerberosAuthenticationFilter=debug
|
||||||
|
|
||||||
|
# File servers
|
||||||
|
log4j.logger.org.alfresco.fileserver=warn
|
||||||
|
|
||||||
|
# Repo filesystem debug logging
|
||||||
|
#log4j.logger.org.alfresco.filesys.repo.ContentDiskDriver=debug
|
||||||
|
|
||||||
|
# AVM filesystem debug logging
|
||||||
|
#log4j.logger.org.alfresco.filesys.avm.AVMDiskDriver=debug
|
||||||
|
|
||||||
|
# Integrity message threshold - if 'failOnViolation' is off, then WARNINGS are generated
|
||||||
|
log4j.logger.org.alfresco.repo.node.integrity=ERROR
|
||||||
|
|
||||||
|
# Indexer debugging
|
||||||
|
log4j.logger.org.alfresco.repo.search.Indexer=error
|
||||||
|
#log4j.logger.org.alfresco.repo.search.Indexer=debug
|
||||||
|
|
||||||
|
log4j.logger.org.alfresco.repo.search.impl.lucene.index=error
|
||||||
|
log4j.logger.org.alfresco.repo.search.impl.lucene.fts.FullTextSearchIndexerImpl=warn
|
||||||
|
#log4j.logger.org.alfresco.repo.search.impl.lucene.index=DEBUG
|
||||||
|
|
||||||
|
# Audit debugging
|
||||||
|
# log4j.logger.org.alfresco.repo.audit=DEBUG
|
||||||
|
# log4j.logger.org.alfresco.repo.audit.model=DEBUG
|
||||||
|
|
||||||
|
# Forms debugging
|
||||||
|
# log4j.logger.org.alfresco.web.forms=debug
|
||||||
|
# log4j.logger.org.chiba.xml.xforms=debug
|
||||||
|
log4j.logger.org.alfresco.web.forms.xforms.XFormsBean=error
|
||||||
|
log4j.logger.org.alfresco.web.forms.XSLTRenderingEngine=error
|
||||||
|
|
||||||
|
# Property sheet and modelling debugging
|
||||||
|
# change to error to hide the warnings about missing properties and associations
|
||||||
|
log4j.logger.alfresco.missingProperties=warn
|
||||||
|
log4j.logger.org.alfresco.web.ui.repo.component.property.UIChildAssociation=warn
|
||||||
|
log4j.logger.org.alfresco.web.ui.repo.component.property.UIAssociation=warn
|
||||||
|
#log4j.logger.org.alfresco.web.ui.repo.component.property=debug
|
||||||
|
|
||||||
|
# Dictionary/Model debugging
|
||||||
|
log4j.logger.org.alfresco.repo.dictionary=warn
|
||||||
|
log4j.logger.org.alfresco.repo.dictionary.types.period=warn
|
||||||
|
|
||||||
|
# Virtualization Server Registry
|
||||||
|
log4j.logger.org.alfresco.mbeans.VirtServerRegistry=error
|
||||||
|
|
||||||
|
# Spring context runtime property setter
|
||||||
|
log4j.logger.org.alfresco.util.RuntimeSystemPropertiesSetter=info
|
||||||
|
|
||||||
|
# Debugging options for clustering
|
||||||
|
log4j.logger.org.alfresco.repo.content.ReplicatingContentStore=error
|
||||||
|
log4j.logger.org.alfresco.repo.content.replication=error
|
||||||
|
|
||||||
|
#log4j.logger.org.alfresco.repo.deploy.DeploymentServiceImpl=debug
|
||||||
|
|
||||||
|
# Activity service
|
||||||
|
log4j.logger.org.alfresco.repo.activities=warn
|
||||||
|
|
||||||
|
# User usage tracking
|
||||||
|
log4j.logger.org.alfresco.repo.usage=info
|
||||||
|
|
||||||
|
# Sharepoint
|
||||||
|
log4j.logger.org.alfresco.module.vti=info
|
||||||
|
|
||||||
|
# Forms Engine
|
||||||
|
log4j.logger.org.alfresco.repo.forms=info
|
||||||
|
log4j.logger.org.alfresco.web.config.forms=info
|
||||||
|
log4j.logger.org.alfresco.web.scripts.forms=info
|
||||||
|
|
||||||
|
# CMIS
|
||||||
|
log4j.logger.org.alfresco.opencmis=error
|
||||||
|
log4j.logger.org.alfresco.opencmis.AlfrescoCmisServiceInterceptor=error
|
||||||
|
log4j.logger.org.alfresco.cmis=error
|
||||||
|
log4j.logger.org.alfresco.cmis.dictionary=warn
|
||||||
|
log4j.logger.org.apache.chemistry.opencmis=info
|
||||||
|
|
||||||
|
# IMAP
|
||||||
|
log4j.logger.org.alfresco.repo.imap=info
|
||||||
|
|
||||||
|
# JBPM
|
||||||
|
# Note: non-fatal errors (eg. logged during job execution) should be handled by Alfresco's retrying transaction handler
|
||||||
|
log4j.logger.org.jbpm.graph.def.GraphElement=fatal
|
||||||
|
|
||||||
|
#log4j.logger.org.alfresco.repo.googledocs=debug
|
||||||
|
|
||||||
|
###### Scripting #######
|
||||||
|
|
||||||
|
# Web Framework
|
||||||
|
log4j.logger.org.springframework.extensions.webscripts=info
|
||||||
|
log4j.logger.org.springframework.extensions.webscripts.ScriptLogger=warn
|
||||||
|
log4j.logger.org.springframework.extensions.webscripts.ScriptDebugger=off
|
||||||
|
|
||||||
|
# Repository
|
||||||
|
log4j.logger.org.alfresco.repo.web.scripts=warn
|
||||||
|
log4j.logger.org.alfresco.repo.web.scripts.BaseWebScriptTest=info
|
||||||
|
log4j.logger.org.alfresco.repo.web.scripts.AlfrescoRhinoScriptDebugger=off
|
||||||
|
log4j.logger.org.alfresco.repo.jscript=error
|
||||||
|
log4j.logger.org.alfresco.repo.jscript.ScriptLogger=warn
|
||||||
|
log4j.logger.org.alfresco.repo.cmis.rest.CMISTest=info
|
||||||
|
|
||||||
|
log4j.logger.org.alfresco.repo.avm.actions=info
|
||||||
|
|
||||||
|
# Freemarker
|
||||||
|
# Note the freemarker.runtime logger is used to log non-fatal errors that are handled by Alfresco's retrying transaction handler
|
||||||
|
log4j.logger.freemarker.runtime=
|
||||||
|
|
||||||
|
# Metadata extraction
|
||||||
|
log4j.logger.org.alfresco.repo.content.metadata.AbstractMappingMetadataExtracter=warn
|
||||||
|
|
||||||
|
# Reduces PDFont error level due to ALF-7105
|
||||||
|
log4j.logger.org.apache.pdfbox.pdmodel.font.PDSimpleFont=fatal
|
||||||
|
log4j.logger.org.apache.pdfbox.pdmodel.font.PDFont=fatal
|
||||||
|
log4j.logger.org.apache.pdfbox.pdmodel.font.PDCIDFont=fatal
|
||||||
|
|
||||||
|
# no index support
|
||||||
|
log4j.logger.org.alfresco.repo.search.impl.noindex.NoIndexIndexer=fatal
|
||||||
|
log4j.logger.org.alfresco.repo.search.impl.noindex.NoIndexSearchService=fatal
|
@@ -0,0 +1,167 @@
|
|||||||
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
|
<!-- This is a sample from Alfresco Share 4.2.b to demonstrate how to override web.xml in your project.
|
||||||
|
| Uncomment this file to overlay to the webapp.
|
||||||
|
| NOTE: you will need to change/update this if you use a different Alfresco version / edition
|
||||||
|
-->
|
||||||
|
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">
|
||||||
|
|
||||||
|
<display-name>Alfresco Project Slingshot</display-name>
|
||||||
|
<description>Alfresco Project Slingshot application</description>
|
||||||
|
|
||||||
|
<context-param>
|
||||||
|
<param-name>org.jboss.jbossfaces.WAR_BUNDLES_JSF_IMPL</param-name>
|
||||||
|
<param-value>true</param-value>
|
||||||
|
</context-param>
|
||||||
|
|
||||||
|
<!-- Spring Application Context location and context class -->
|
||||||
|
<context-param>
|
||||||
|
<description>Spring config file location</description>
|
||||||
|
<param-name>contextConfigLocation</param-name>
|
||||||
|
<param-value>/WEB-INF/classes/web-application-config.xml</param-value>
|
||||||
|
</context-param>
|
||||||
|
|
||||||
|
<filter>
|
||||||
|
<description>Set HTTP cache Expires header 30 days forward for a mapping.</description>
|
||||||
|
<filter-name>CacheExpiresFilter</filter-name>
|
||||||
|
<filter-class>org.alfresco.web.scripts.servlet.StaticAssetCacheFilter</filter-class>
|
||||||
|
<init-param>
|
||||||
|
<description>Add an Expires Header 30 days forward</description>
|
||||||
|
<param-name>expires</param-name>
|
||||||
|
<param-value>30</param-value>
|
||||||
|
</init-param>
|
||||||
|
</filter>
|
||||||
|
|
||||||
|
<filter>
|
||||||
|
<description>MT authentication support - NOTE: does not support portlets</description>
|
||||||
|
<filter-name>MTAuthentationFilter</filter-name>
|
||||||
|
<filter-class>org.alfresco.web.site.servlet.MTAuthenticationFilter</filter-class>
|
||||||
|
</filter>
|
||||||
|
|
||||||
|
<filter>
|
||||||
|
<description>Redirects view and service URLs to the dispatcher servlet.</description>
|
||||||
|
<filter-name>UrlRewriteFilter</filter-name>
|
||||||
|
<filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
|
||||||
|
</filter>
|
||||||
|
|
||||||
|
<filter>
|
||||||
|
<description>Share SSO authentication support filter.</description>
|
||||||
|
<filter-name>Authentication Filter</filter-name>
|
||||||
|
<filter-class>org.alfresco.web.site.servlet.SSOAuthenticationFilter</filter-class>
|
||||||
|
<init-param>
|
||||||
|
<param-name>endpoint</param-name>
|
||||||
|
<param-value>alfresco</param-value>
|
||||||
|
</init-param>
|
||||||
|
</filter>
|
||||||
|
|
||||||
|
<filter-mapping>
|
||||||
|
<filter-name>CacheExpiresFilter</filter-name>
|
||||||
|
<url-pattern>*.jpg</url-pattern>
|
||||||
|
</filter-mapping>
|
||||||
|
<filter-mapping>
|
||||||
|
<filter-name>CacheExpiresFilter</filter-name>
|
||||||
|
<url-pattern>*.png</url-pattern>
|
||||||
|
</filter-mapping>
|
||||||
|
<filter-mapping>
|
||||||
|
<filter-name>CacheExpiresFilter</filter-name>
|
||||||
|
<url-pattern>*.gif</url-pattern>
|
||||||
|
</filter-mapping>
|
||||||
|
<filter-mapping>
|
||||||
|
<filter-name>CacheExpiresFilter</filter-name>
|
||||||
|
<url-pattern>*.css</url-pattern>
|
||||||
|
</filter-mapping>
|
||||||
|
<filter-mapping>
|
||||||
|
<filter-name>CacheExpiresFilter</filter-name>
|
||||||
|
<url-pattern>*.js</url-pattern>
|
||||||
|
</filter-mapping>
|
||||||
|
|
||||||
|
<filter-mapping>
|
||||||
|
<filter-name>Authentication Filter</filter-name>
|
||||||
|
<url-pattern>/page/*</url-pattern>
|
||||||
|
</filter-mapping>
|
||||||
|
|
||||||
|
<filter-mapping>
|
||||||
|
<filter-name>Authentication Filter</filter-name>
|
||||||
|
<url-pattern>/p/*</url-pattern>
|
||||||
|
</filter-mapping>
|
||||||
|
|
||||||
|
<filter-mapping>
|
||||||
|
<filter-name>Authentication Filter</filter-name>
|
||||||
|
<url-pattern>/proxy/*</url-pattern>
|
||||||
|
</filter-mapping>
|
||||||
|
|
||||||
|
<filter-mapping>
|
||||||
|
<filter-name>UrlRewriteFilter</filter-name>
|
||||||
|
<url-pattern>/proxy/*</url-pattern>
|
||||||
|
</filter-mapping>
|
||||||
|
|
||||||
|
<filter-mapping>
|
||||||
|
<filter-name>UrlRewriteFilter</filter-name>
|
||||||
|
<url-pattern>/service/*</url-pattern>
|
||||||
|
</filter-mapping>
|
||||||
|
|
||||||
|
<filter-mapping>
|
||||||
|
<filter-name>UrlRewriteFilter</filter-name>
|
||||||
|
<url-pattern>/feedservice/*</url-pattern>
|
||||||
|
</filter-mapping>
|
||||||
|
|
||||||
|
<filter-mapping>
|
||||||
|
<filter-name>UrlRewriteFilter</filter-name>
|
||||||
|
<url-pattern>/res/*</url-pattern>
|
||||||
|
</filter-mapping>
|
||||||
|
|
||||||
|
<filter-mapping>
|
||||||
|
<filter-name>UrlRewriteFilter</filter-name>
|
||||||
|
<url-pattern>/system/*</url-pattern>
|
||||||
|
</filter-mapping>
|
||||||
|
|
||||||
|
<filter-mapping>
|
||||||
|
<filter-name>MTAuthentationFilter</filter-name>
|
||||||
|
<url-pattern>/page/*</url-pattern>
|
||||||
|
</filter-mapping>
|
||||||
|
<filter-mapping>
|
||||||
|
<filter-name>MTAuthentationFilter</filter-name>
|
||||||
|
<url-pattern>/p/*</url-pattern>
|
||||||
|
</filter-mapping>
|
||||||
|
|
||||||
|
<!-- Spring Context Loader listener - the name of the default global context is passed to the DispatcherServlet
|
||||||
|
in the servlet definition below - this is to allow the NTLM filter etc. to find the single app context -->
|
||||||
|
<listener>
|
||||||
|
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
|
||||||
|
</listener>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>Spring Surf Dispatcher Servlet</servlet-name>
|
||||||
|
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
|
||||||
|
<init-param>
|
||||||
|
<param-name>contextAttribute</param-name>
|
||||||
|
<param-value>org.springframework.web.context.WebApplicationContext.ROOT</param-value>
|
||||||
|
</init-param>
|
||||||
|
<load-on-startup>1</load-on-startup>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>Spring Surf Dispatcher Servlet</servlet-name>
|
||||||
|
<url-pattern>/page/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>Spring Surf Dispatcher Servlet</servlet-name>
|
||||||
|
<url-pattern>/p/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<session-config>
|
||||||
|
<session-timeout>60</session-timeout>
|
||||||
|
</session-config>
|
||||||
|
|
||||||
|
<!-- welcome file list precedence order is index.jsp -->
|
||||||
|
<welcome-file-list>
|
||||||
|
<welcome-file>page</welcome-file>
|
||||||
|
<welcome-file>index.jsp</welcome-file>
|
||||||
|
</welcome-file-list>
|
||||||
|
|
||||||
|
<error-page>
|
||||||
|
<error-code>500</error-code>
|
||||||
|
<location>/error500.jsp</location>
|
||||||
|
</error-page>
|
||||||
|
|
||||||
|
</web-app>
|
@@ -0,0 +1,148 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<artifactId>${artifactId}</artifactId>
|
||||||
|
<name>Alfresco Apache Solr customization</name>
|
||||||
|
<packaging>pom</packaging>
|
||||||
|
<description>Alfresco Apache Solr Customization</description>
|
||||||
|
|
||||||
|
<parent>
|
||||||
|
<groupId>${groupId}</groupId>
|
||||||
|
<artifactId>${rootArtifactId}</artifactId>
|
||||||
|
<version>${version}</version>
|
||||||
|
</parent>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<alfresco.solr.dir>${project.basedir}/solr_home</alfresco.solr.dir>
|
||||||
|
<alfresco.solr.war.overlay>${project.build.directory}/${project.artifactId}-overlay</alfresco.solr.war.overlay>
|
||||||
|
</properties>
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-dependency-plugin</artifactId>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>copy-alfresco-community-lib</id>
|
||||||
|
<goals><goal>unpack</goal></goals>
|
||||||
|
<phase>generate-resources</phase>
|
||||||
|
<configuration>
|
||||||
|
<outputDirectory>${alfresco.solr.dir}</outputDirectory>
|
||||||
|
<artifactItems>
|
||||||
|
<artifactItem>
|
||||||
|
<artifactId>alfresco-solr</artifactId>
|
||||||
|
<groupId>${alfresco.groupId}</groupId>
|
||||||
|
<version>${alfresco.version}</version>
|
||||||
|
<type>zip</type>
|
||||||
|
</artifactItem>
|
||||||
|
</artifactItems>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-antrun-plugin</artifactId>
|
||||||
|
<version>1.7</version>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>overlay-solr-war</id>
|
||||||
|
<phase>generate-resources</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>run</goal>
|
||||||
|
</goals>
|
||||||
|
<configuration>
|
||||||
|
<tasks>
|
||||||
|
<echo message="Unpacking Apache Solr for web.xml overlay" />
|
||||||
|
<unzip src="${alfresco.solr.dir}/apache-solr-1.4.1.war" dest="${alfresco.solr.war.overlay}" />
|
||||||
|
</tasks>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-resources-plugin</artifactId>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>overlay-web-xml</id>
|
||||||
|
<phase>process-resources</phase>
|
||||||
|
<goals><goal>copy-resources</goal></goals>
|
||||||
|
<configuration>
|
||||||
|
<outputDirectory>${alfresco.solr.war.overlay}/WEB-INF</outputDirectory>
|
||||||
|
<overwrite>true</overwrite>
|
||||||
|
<resources>
|
||||||
|
<resource>
|
||||||
|
<directory>src/main/webapp/WEB-INF</directory>
|
||||||
|
<includes>
|
||||||
|
<include>web.xml</include>
|
||||||
|
</includes>
|
||||||
|
</resource>
|
||||||
|
<resource>
|
||||||
|
<directory>src/main/resources</directory>
|
||||||
|
<filtering>true</filtering>
|
||||||
|
<targetPath>classes</targetPath>
|
||||||
|
</resource>
|
||||||
|
</resources>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-antrun-plugin</artifactId>
|
||||||
|
<version>1.7</version>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>create-solr-war</id>
|
||||||
|
<phase>package</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>run</goal>
|
||||||
|
</goals>
|
||||||
|
<configuration>
|
||||||
|
<tasks>
|
||||||
|
<echo message="Packaging Apache Solr WAR overlay" />
|
||||||
|
<zip basedir="${alfresco.solr.war.overlay}" destfile="${alfresco.solr.dir}/apache-solr-1.4.1-overlay.war" />
|
||||||
|
</tasks>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-resources-plugin</artifactId>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>copy-lib</id>
|
||||||
|
<phase>package</phase>
|
||||||
|
<goals><goal>copy-resources</goal></goals>
|
||||||
|
<configuration>
|
||||||
|
<outputDirectory>${alfresco.solr.dir}</outputDirectory>
|
||||||
|
<resources>
|
||||||
|
<resource>
|
||||||
|
<directory>src/main/solr-properties/archive</directory>
|
||||||
|
<filtering>true</filtering>
|
||||||
|
<targetPath>${alfresco.solr.dir}/archive-SpacesStore/conf</targetPath>
|
||||||
|
</resource>
|
||||||
|
<resource>
|
||||||
|
<directory>src/main/solr-properties/workspace</directory>
|
||||||
|
<filtering>true</filtering>
|
||||||
|
<targetPath>${alfresco.solr.dir}/workspace-SpacesStore/conf</targetPath>
|
||||||
|
</resource>
|
||||||
|
</resources>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>${alfresco.groupId}</groupId>
|
||||||
|
<artifactId>alfresco-solr</artifactId>
|
||||||
|
<version>${alfresco.version}</version>
|
||||||
|
<type>zip</type>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</project>
|
@@ -0,0 +1,18 @@
|
|||||||
|
# Set root logger level to error
|
||||||
|
log4j.rootLogger=${app.log.root.level}, Console, File
|
||||||
|
|
||||||
|
###### Console appender definition #######
|
||||||
|
|
||||||
|
# All outputs currently set to be a ConsoleAppender.
|
||||||
|
log4j.appender.Console=org.apache.log4j.ConsoleAppender
|
||||||
|
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
|
||||||
|
|
||||||
|
log4j.appender.Console.layout.ConversionPattern=%d{ISO8601} %x %-5p [%c{3}] [%t] %m%n
|
||||||
|
|
||||||
|
###### File appender definition #######
|
||||||
|
log4j.appender.File=org.apache.log4j.DailyRollingFileAppender
|
||||||
|
log4j.appender.File.File=${app.log.dir}solr.log
|
||||||
|
log4j.appender.File.Append=true
|
||||||
|
log4j.appender.File.DatePattern='.'yyyy-MM-dd
|
||||||
|
log4j.appender.File.layout=org.apache.log4j.PatternLayout
|
||||||
|
log4j.appender.File.layout.ConversionPattern=%d{ABSOLUTE} %-5p [%c] %m%n
|
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,83 @@
|
|||||||
|
#
|
||||||
|
# solrcore.properties - used in solrconfig.xml
|
||||||
|
#
|
||||||
|
# data is in ${data.dir.root}/${data.dir.store}
|
||||||
|
|
||||||
|
data.dir.root=${alfresco.solr.dir}
|
||||||
|
data.dir.store=archive/SpacesStore
|
||||||
|
enable.alfresco.tracking=true
|
||||||
|
cache.alfresco.size=100
|
||||||
|
max.field.length=2147483647
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Properties loaded during alfresco tracking
|
||||||
|
#
|
||||||
|
|
||||||
|
alfresco.host=localhost
|
||||||
|
alfresco.port=8080
|
||||||
|
alfresco.port.ssl=8443
|
||||||
|
alfresco.baseUrl=/alfresco
|
||||||
|
alfresco.cron=0/15 * * * * ? *
|
||||||
|
alfresco.stores=archive://SpacesStore
|
||||||
|
alfresco.lag=1000
|
||||||
|
alfresco.hole.retention=3600000
|
||||||
|
alfresco.batch.count=1000
|
||||||
|
|
||||||
|
# encryption
|
||||||
|
|
||||||
|
# none, https
|
||||||
|
alfresco.secureComms=none
|
||||||
|
|
||||||
|
# ssl
|
||||||
|
alfresco.encryption.ssl.keystore.type=JCEKS
|
||||||
|
alfresco.encryption.ssl.keystore.provider=
|
||||||
|
alfresco.encryption.ssl.keystore.location=ssl.repo.client.keystore
|
||||||
|
alfresco.encryption.ssl.keystore.passwordFileLocation=ssl-keystore-passwords.properties
|
||||||
|
alfresco.encryption.ssl.truststore.type=JCEKS
|
||||||
|
alfresco.encryption.ssl.truststore.provider=
|
||||||
|
alfresco.encryption.ssl.truststore.location=ssl.repo.client.truststore
|
||||||
|
alfresco.encryption.ssl.truststore.passwordFileLocation=ssl-truststore-passwords.properties
|
||||||
|
|
||||||
|
## Tracking
|
||||||
|
|
||||||
|
alfresco.enableMultiThreadedTracking=true
|
||||||
|
alfresco.corePoolSize=3
|
||||||
|
alfresco.maximumPoolSize=-1
|
||||||
|
alfresco.keepAliveTime=120
|
||||||
|
alfresco.threadPriority=5
|
||||||
|
alfresco.threadDaemon=true
|
||||||
|
alfresco.workQueueSize=-1
|
||||||
|
|
||||||
|
# HTTP Client
|
||||||
|
|
||||||
|
alfresco.maxTotalConnections=40
|
||||||
|
alfresco.maxHostConnections=40
|
||||||
|
|
||||||
|
# SOLR caching
|
||||||
|
|
||||||
|
solr.filterCache.size=512
|
||||||
|
solr.filterCache.initialSize=512
|
||||||
|
solr.queryResultCache.size=512
|
||||||
|
solr.queryResultCache.initialSize=512
|
||||||
|
solr.documentCache.size=512
|
||||||
|
solr.documentCache.initialSize=512
|
||||||
|
solr.queryResultMaxDocsCached=200
|
||||||
|
|
||||||
|
solr.authorityCache.size=512
|
||||||
|
solr.authorityCache.initialSize=512
|
||||||
|
solr.pathCache.size=512
|
||||||
|
solr.pathCache.initialSize=512
|
||||||
|
|
||||||
|
# SOLR
|
||||||
|
|
||||||
|
solr.maxBooleanClauses=10000
|
||||||
|
|
||||||
|
#
|
||||||
|
# TODO
|
||||||
|
#
|
||||||
|
# cross language support
|
||||||
|
# locale expansion
|
||||||
|
# logging check report ....
|
||||||
|
#
|
||||||
|
#
|
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,103 @@
|
|||||||
|
#
|
||||||
|
# solrcore.properties - used in solrconfig.xml
|
||||||
|
#
|
||||||
|
# data is in ${data.dir.root}/${data.dir.store}
|
||||||
|
|
||||||
|
data.dir.root=${alfresco.solr.dir}
|
||||||
|
data.dir.store=workspace/SpacesStore
|
||||||
|
enable.alfresco.tracking=true
|
||||||
|
cache.alfresco.size=100
|
||||||
|
max.field.length=2147483647
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Properties loaded during alfresco tracking
|
||||||
|
#
|
||||||
|
|
||||||
|
alfresco.host=localhost
|
||||||
|
alfresco.port=8080
|
||||||
|
alfresco.port.ssl=8443
|
||||||
|
alfresco.baseUrl=/alfresco
|
||||||
|
alfresco.cron=0/15 * * * * ? *
|
||||||
|
alfresco.stores=workspace://SpacesStore
|
||||||
|
#alfresco.index.transformContent=false
|
||||||
|
#alfresco.ignore.datatype.1=d:content
|
||||||
|
alfresco.lag=1000
|
||||||
|
alfresco.hole.retention=3600000
|
||||||
|
# alfresco.hole.check.after is not used yet
|
||||||
|
# It will reduce the hole checking load
|
||||||
|
alfresco.hole.check.after=300000
|
||||||
|
alfresco.batch.count=1000
|
||||||
|
|
||||||
|
# encryption
|
||||||
|
|
||||||
|
# none, https
|
||||||
|
alfresco.secureComms=none
|
||||||
|
|
||||||
|
# ssl
|
||||||
|
alfresco.encryption.ssl.keystore.type=JCEKS
|
||||||
|
alfresco.encryption.ssl.keystore.provider=
|
||||||
|
alfresco.encryption.ssl.keystore.location=ssl.repo.client.keystore
|
||||||
|
alfresco.encryption.ssl.keystore.passwordFileLocation=ssl-keystore-passwords.properties
|
||||||
|
alfresco.encryption.ssl.truststore.type=JCEKS
|
||||||
|
alfresco.encryption.ssl.truststore.provider=
|
||||||
|
alfresco.encryption.ssl.truststore.location=ssl.repo.client.truststore
|
||||||
|
alfresco.encryption.ssl.truststore.passwordFileLocation=ssl-truststore-passwords.properties
|
||||||
|
|
||||||
|
# Tracking
|
||||||
|
|
||||||
|
alfresco.enableMultiThreadedTracking=true
|
||||||
|
alfresco.corePoolSize=3
|
||||||
|
alfresco.maximumPoolSize=-1
|
||||||
|
alfresco.keepAliveTime=120
|
||||||
|
alfresco.threadPriority=5
|
||||||
|
alfresco.threadDaemon=true
|
||||||
|
alfresco.workQueueSize=-1
|
||||||
|
|
||||||
|
# HTTP Client
|
||||||
|
|
||||||
|
alfresco.maxTotalConnections=40
|
||||||
|
alfresco.maxHostConnections=40
|
||||||
|
|
||||||
|
# SOLR caching
|
||||||
|
|
||||||
|
solr.filterCache.size=512
|
||||||
|
solr.filterCache.initialSize=512
|
||||||
|
solr.queryResultCache.size=1024
|
||||||
|
solr.queryResultCache.initialSize=1024
|
||||||
|
solr.documentCache.size=512
|
||||||
|
solr.documentCache.initialSize=512
|
||||||
|
solr.queryResultMaxDocsCached=2000
|
||||||
|
|
||||||
|
solr.authorityCache.size=512
|
||||||
|
solr.authorityCache.initialSize=512
|
||||||
|
solr.pathCache.size=512
|
||||||
|
solr.pathCache.initialSize=512
|
||||||
|
|
||||||
|
# SOLR
|
||||||
|
|
||||||
|
solr.maxBooleanClauses=10000
|
||||||
|
|
||||||
|
# Batch fetch
|
||||||
|
|
||||||
|
alfresco.transactionDocsBatchSize=100
|
||||||
|
alfresco.changeSetAclsBatchSize=100
|
||||||
|
alfresco.aclBatchSize=10
|
||||||
|
|
||||||
|
# Warming
|
||||||
|
|
||||||
|
solr.filterCache.autowarmCount=128
|
||||||
|
solr.authorityCache.autowarmCount=0
|
||||||
|
solr.pathCache.autowarmCount=128
|
||||||
|
|
||||||
|
solr.queryResultWindowSize=200
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# TODO
|
||||||
|
#
|
||||||
|
# cross language support
|
||||||
|
# locale expansion
|
||||||
|
# logging check report ....
|
||||||
|
#
|
||||||
|
#
|
@@ -0,0 +1,175 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
|
||||||
|
<!--
|
||||||
|
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.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<web-app>
|
||||||
|
|
||||||
|
<!-- Uncomment if you are trying to use a Resin version before 3.0.19.
|
||||||
|
Their XML implementation isn't entirely compatible with Xerces.
|
||||||
|
Below are the implementations to use with Sun's JVM.
|
||||||
|
<system-property javax.xml.xpath.XPathFactory=
|
||||||
|
"com.sun.org.apache.xpath.internal.jaxp.XPathFactoryImpl"/>
|
||||||
|
<system-property javax.xml.parsers.DocumentBuilderFactory=
|
||||||
|
"com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl"/>
|
||||||
|
<system-property javax.xml.parsers.SAXParserFactory=
|
||||||
|
"com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl"/>
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!-- People who want to hardcode their "Solr Home" directly into the
|
||||||
|
WAR File can set the JNDI property here...
|
||||||
|
-->
|
||||||
|
<!--
|
||||||
|
<env-entry>
|
||||||
|
<env-entry-name>solr/home</env-entry-name>
|
||||||
|
<env-entry-value>/put/your/solr/home/here</env-entry-value>
|
||||||
|
<env-entry-type>java.lang.String</env-entry-type>
|
||||||
|
</env-entry>
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!-- Any path (name) registered in solrconfig.xml will be sent to that filter -->
|
||||||
|
<filter>
|
||||||
|
<filter-name>SolrRequestFilter</filter-name>
|
||||||
|
<filter-class>org.apache.solr.servlet.SolrDispatchFilter</filter-class>
|
||||||
|
<!-- If you are wiring Solr into a larger web application which controls
|
||||||
|
the web context root, you will probably want to mount Solr under
|
||||||
|
a path prefix (app.war with /app/solr mounted into it, for example).
|
||||||
|
You will need to put this prefix in front of the SolrDispatchFilter
|
||||||
|
url-pattern mapping too (/solr/*), and also on any paths for
|
||||||
|
legacy Solr servlet mappings you may be using.
|
||||||
|
For the admin JSP's to work properly in a path-prefixed configuration,
|
||||||
|
the admin folder containing the JSPs needs to be under the app context root
|
||||||
|
named to match the path-prefix. For example:
|
||||||
|
|
||||||
|
.war
|
||||||
|
xxx
|
||||||
|
admin
|
||||||
|
stats.jsp
|
||||||
|
-->
|
||||||
|
<!--
|
||||||
|
<init-param>
|
||||||
|
<param-name>path-prefix</param-name>
|
||||||
|
<param-value>/xxx</param-value>
|
||||||
|
</init-param>
|
||||||
|
-->
|
||||||
|
</filter>
|
||||||
|
|
||||||
|
<filter-mapping>
|
||||||
|
<!--
|
||||||
|
NOTE: When using multicore, /admin JSP URLs with a core specified
|
||||||
|
such as /solr/coreName/admin/stats.jsp get forwarded by a
|
||||||
|
RequestDispatcher to /solr/admin/stats.jsp with the specified core
|
||||||
|
put into request scope keyed as "org.apache.solr.SolrCore".
|
||||||
|
|
||||||
|
It is unnecessary, and potentially problematic, to have the SolrDispatchFilter
|
||||||
|
configured to also filter on forwards. Do not configure
|
||||||
|
this dispatcher as <dispatcher>FORWARD</dispatcher>.
|
||||||
|
-->
|
||||||
|
<filter-name>SolrRequestFilter</filter-name>
|
||||||
|
<url-pattern>/*</url-pattern>
|
||||||
|
</filter-mapping>
|
||||||
|
|
||||||
|
<!-- Otherwise it will continue to the old servlets -->
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>SolrServer</servlet-name>
|
||||||
|
<display-name>Solr</display-name>
|
||||||
|
<description>Solr Server</description>
|
||||||
|
<servlet-class>org.apache.solr.servlet.SolrServlet</servlet-class>
|
||||||
|
<load-on-startup>1</load-on-startup>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>SolrUpdate</servlet-name>
|
||||||
|
<display-name>SolrUpdate</display-name>
|
||||||
|
<description>Solr Update Handler</description>
|
||||||
|
<servlet-class>org.apache.solr.servlet.SolrUpdateServlet</servlet-class>
|
||||||
|
<load-on-startup>2</load-on-startup>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>Logging</servlet-name>
|
||||||
|
<servlet-class>org.apache.solr.servlet.LogLevelSelection</servlet-class>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<!-- @Deprecated -->
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>ping</servlet-name>
|
||||||
|
<jsp-file>/admin/ping.jsp</jsp-file>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>SolrServer</servlet-name>
|
||||||
|
<url-pattern>/select/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>SolrUpdate</servlet-name>
|
||||||
|
<url-pattern>/update/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>Logging</servlet-name>
|
||||||
|
<url-pattern>/admin/logging</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<!-- @Deprecated -->
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>ping</servlet-name>
|
||||||
|
<url-pattern>/admin/ping</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<!-- @Deprecated -->
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>Logging</servlet-name>
|
||||||
|
<url-pattern>/admin/logging.jsp</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<mime-mapping>
|
||||||
|
<extension>.xsl</extension>
|
||||||
|
<!-- per http://www.w3.org/TR/2006/PR-xslt20-20061121/ -->
|
||||||
|
<mime-type>application/xslt+xml</mime-type>
|
||||||
|
</mime-mapping>
|
||||||
|
<!--
|
||||||
|
| Needs to be commented out to use HTTP
|
||||||
|
| Uncomment to re-renable https alongside changing alfresco.secureComms=https
|
||||||
|
| in the solrcore.properties
|
||||||
|
|
|
||||||
|
-->
|
||||||
|
<!--
|
||||||
|
<security-constraint>
|
||||||
|
<web-resource-collection>
|
||||||
|
<url-pattern>/*</url-pattern>
|
||||||
|
</web-resource-collection>
|
||||||
|
<auth-constraint>
|
||||||
|
<role-name>repository</role-name>
|
||||||
|
</auth-constraint>
|
||||||
|
<user-data-constraint>
|
||||||
|
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
|
||||||
|
</user-data-constraint>
|
||||||
|
</security-constraint>
|
||||||
|
|
||||||
|
<login-config>
|
||||||
|
<auth-method>CLIENT-CERT</auth-method>
|
||||||
|
<realm-name>Solr</realm-name>
|
||||||
|
</login-config>
|
||||||
|
|
||||||
|
<security-role>
|
||||||
|
<role-name>repository</role-name>
|
||||||
|
</security-role>
|
||||||
|
-->
|
||||||
|
</web-app>
|
@@ -0,0 +1,42 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<project
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
|
||||||
|
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<parent>
|
||||||
|
<groupId>${groupId}</groupId>
|
||||||
|
<artifactId>${rootArtifactId}</artifactId>
|
||||||
|
<version>${version}</version>
|
||||||
|
</parent>
|
||||||
|
<artifactId>wcmqs</artifactId>
|
||||||
|
<packaging>war</packaging>
|
||||||
|
<name>Alfresco Web Quick Start customization</name>
|
||||||
|
<description>This project allows you to customize and overlay Alfresco Web Quick Start</description>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>${alfresco.groupId}</groupId>
|
||||||
|
<artifactId>alfresco-wcm-quickstart</artifactId>
|
||||||
|
<version>${alfresco.version}</version>
|
||||||
|
<type>war</type>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<artifactId>maven-war-plugin</artifactId>
|
||||||
|
<configuration>
|
||||||
|
<overlays>
|
||||||
|
<!-- The current project customizations -->
|
||||||
|
<overlay />
|
||||||
|
<!-- The Alfresco WCMQS War -->
|
||||||
|
<overlay>
|
||||||
|
<artifactId>alfresco-wcm-quickstart</artifactId>
|
||||||
|
<groupId>${alfresco.groupId}</groupId>
|
||||||
|
</overlay>
|
||||||
|
</overlays>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
|
||||||
|
</project>
|
@@ -0,0 +1,55 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE log4j:configuration PUBLIC "-//LOGGER" "../dtd/log4j.dtd">
|
||||||
|
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
|
||||||
|
|
||||||
|
<!-- Appenders -->
|
||||||
|
<appender name="console" class="org.apache.log4j.ConsoleAppender">
|
||||||
|
<param name="Target" value="System.out" />
|
||||||
|
<layout class="org.apache.log4j.PatternLayout">
|
||||||
|
<param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c] %m%n" />
|
||||||
|
</layout>
|
||||||
|
</appender>
|
||||||
|
<appender name="file" class="org.apache.log4j.DailyRollingFileAppender">
|
||||||
|
<param name="File" value="${app.log.dir}webquickstart.log" />
|
||||||
|
<param name="Append" value="true" />
|
||||||
|
<param name="Encoding" value="UTF-8" />
|
||||||
|
<param name="DatePattern" value="'.'yyyy-MM-dd" />
|
||||||
|
<layout class="org.apache.log4j.PatternLayout">
|
||||||
|
<param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c] %m%n" />
|
||||||
|
</layout>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<!-- Application Loggers -->
|
||||||
|
<logger name="org.alfresco.samples.quickstart">
|
||||||
|
<level value="warn" />
|
||||||
|
</logger>
|
||||||
|
|
||||||
|
<!-- 3rdparty Loggers -->
|
||||||
|
<logger name="org.springframework.core">
|
||||||
|
<level value="warn" />
|
||||||
|
</logger>
|
||||||
|
|
||||||
|
<logger name="org.springframework.beans">
|
||||||
|
<level value="warn" />
|
||||||
|
</logger>
|
||||||
|
|
||||||
|
<logger name="org.springframework.context">
|
||||||
|
<level value="warn" />
|
||||||
|
</logger>
|
||||||
|
|
||||||
|
<logger name="org.springframework.web">
|
||||||
|
<level value="warn" />
|
||||||
|
</logger>
|
||||||
|
|
||||||
|
<logger name="org.alfresco.wcm">
|
||||||
|
<level value="warn" />
|
||||||
|
</logger>
|
||||||
|
|
||||||
|
<!-- Root Logger -->
|
||||||
|
<root>
|
||||||
|
<priority value="${app.log.root.level}" />
|
||||||
|
<appender-ref ref="console" />
|
||||||
|
<appender-ref ref="file" />
|
||||||
|
</root>
|
||||||
|
|
||||||
|
</log4j:configuration>
|
@@ -0,0 +1,19 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
<groupId>org.alfresco.maven.archetype</groupId>
|
||||||
|
<artifactId>alfresco-amp-archetype</artifactId>
|
||||||
|
|
||||||
|
<packaging>maven-archetype</packaging>
|
||||||
|
<name>AMP Archetype from Maven Alfresco SDK</name>
|
||||||
|
<description>Sample project with full support for lifecycle and rapid development of AMPs (Alfresco Module Packages)</description>
|
||||||
|
|
||||||
|
<parent>
|
||||||
|
<groupId>org.alfresco.maven</groupId>
|
||||||
|
<artifactId>alfresco-lifecycle-aggregator</artifactId>
|
||||||
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
<relativePath>../../pom.xml</relativePath>
|
||||||
|
</parent>
|
||||||
|
|
||||||
|
</project>
|
@@ -0,0 +1,73 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<archetype-descriptor xsi:schemaLocation="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0 http://maven.apache.org/xsd/archetype-descriptor-1.0.0.xsd" name="quickstart-amp-archetype"
|
||||||
|
xmlns="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||||
|
<requiredProperties>
|
||||||
|
<requiredProperty key="version">
|
||||||
|
<defaultValue>1.0-SNAPSHOT</defaultValue>
|
||||||
|
</requiredProperty>
|
||||||
|
<requiredProperty key="alfresco_target_groupId">
|
||||||
|
<defaultValue>org.alfresco</defaultValue>
|
||||||
|
</requiredProperty>
|
||||||
|
<requiredProperty key="alfresco_target_version">
|
||||||
|
<defaultValue>4.2.b</defaultValue>
|
||||||
|
</requiredProperty>
|
||||||
|
<requiredProperty key="package">
|
||||||
|
<defaultValue>(not used)</defaultValue>
|
||||||
|
</requiredProperty>
|
||||||
|
</requiredProperties>
|
||||||
|
<fileSets>
|
||||||
|
<fileSet filtered="true" packaged="false" encoding="UTF-8">
|
||||||
|
<directory>src/main/java</directory>
|
||||||
|
<includes>
|
||||||
|
<include>**/*.java</include>
|
||||||
|
</includes>
|
||||||
|
</fileSet>
|
||||||
|
<fileSet filtered="false" encoding="UTF-8">
|
||||||
|
<directory>src/main/amp</directory>
|
||||||
|
<includes>
|
||||||
|
<include>**/*.jsp</include>
|
||||||
|
<include>**/*.xml</include>
|
||||||
|
<include>**/*.properties</include>
|
||||||
|
<include>**/*.txt</include>
|
||||||
|
</includes>
|
||||||
|
</fileSet>
|
||||||
|
<fileSet encoding="UTF-8">
|
||||||
|
<directory>src/main/amp</directory>
|
||||||
|
<includes>
|
||||||
|
<include>**/*.js</include>
|
||||||
|
<include>**/*.css</include>
|
||||||
|
</includes>
|
||||||
|
</fileSet>
|
||||||
|
<fileSet filtered="false" packaged="false" encoding="UTF-8">
|
||||||
|
<directory>src/test/java</directory>
|
||||||
|
<includes>
|
||||||
|
<include>**/*.java</include>
|
||||||
|
</includes>
|
||||||
|
</fileSet>
|
||||||
|
<fileSet filtered="false" encoding="UTF-8">
|
||||||
|
<directory>src/test/resources</directory>
|
||||||
|
<includes>
|
||||||
|
<include>**/*.properties</include>
|
||||||
|
</includes>
|
||||||
|
</fileSet>
|
||||||
|
<fileSet filtered="false" encoding="UTF-8">
|
||||||
|
<directory>src/test/properties</directory>
|
||||||
|
<includes>
|
||||||
|
<include>**/*.properties</include>
|
||||||
|
</includes>
|
||||||
|
</fileSet>
|
||||||
|
<fileSet filtered="false" encoding="UTF-8">
|
||||||
|
<directory>jetty</directory>
|
||||||
|
<includes>
|
||||||
|
<include>**/*.xml</include>
|
||||||
|
</includes>
|
||||||
|
</fileSet>
|
||||||
|
<fileSet filtered="false" encoding="UTF-8">
|
||||||
|
<directory></directory>
|
||||||
|
<includes>
|
||||||
|
<include>*.txt</include>
|
||||||
|
</includes>
|
||||||
|
</fileSet>
|
||||||
|
</fileSets>
|
||||||
|
</archetype-descriptor>
|
@@ -0,0 +1,123 @@
|
|||||||
|
*************
|
||||||
|
Prerequisites
|
||||||
|
*************
|
||||||
|
|
||||||
|
- The only prerequisite to follow reading this document is to have Apache Maven 3.0.3+ (or higher) installed
|
||||||
|
on your machine; there is no preferred IDE nor web container and database requirements needed.
|
||||||
|
|
||||||
|
- It is strongly advised to use the Apache Maven official binary distributions downloaded from maven.apache.org; avoid
|
||||||
|
OS-specific distributions as much as possible.
|
||||||
|
|
||||||
|
- add MAVEN_OPTS="-Xms256m -Xmx1G -XX:PermSize=300m" to your environment if your plan to launch tests / run embedded in Jetty
|
||||||
|
|
||||||
|
*****
|
||||||
|
Usage
|
||||||
|
*****
|
||||||
|
This project manages an AMP and provides support for typical development lifecycle use cases like:
|
||||||
|
- packaging
|
||||||
|
- testing
|
||||||
|
- run embedded
|
||||||
|
- integration testing
|
||||||
|
- release and distribution
|
||||||
|
|
||||||
|
of your AMP artifact. The AMPs produced with this project are fully compatible with Alfresco MMT,
|
||||||
|
in fact the Alfresco Maven plugin used to manage AMPs in this SDK embeds the official Alfresco MMT to install depdended AMPs.
|
||||||
|
|
||||||
|
Project layout:
|
||||||
|
--------------
|
||||||
|
- src/main/amp (maps the AMP structure, as per https://wiki.alfresco.com/wiki/AMP_Files#The_structure_of_an_AMP_file)
|
||||||
|
|-> module.properties
|
||||||
|
|-> file-mappings.properties (optional)
|
||||||
|
|-> config/
|
||||||
|
|-> web/
|
||||||
|
|-> licenses/
|
||||||
|
|
||||||
|
- src/main/java (Java classes to be packaged in the AMP embedded JAR)
|
||||||
|
- src/main/resources (resources to the packaged in the AMP embedded JAR)
|
||||||
|
|
||||||
|
Useful commands
|
||||||
|
---------------
|
||||||
|
- mvn package --> Runs unit tests and packages AMP in target/
|
||||||
|
- mvn install --> Runs unit tests, packages and installs AMP in local Maven repository
|
||||||
|
- mvn install -Dmaven.test.skip=true --> Packages and installs AMP in local Maven repository, skipping tests
|
||||||
|
- mvn package -Pamp-to-war --> Runs unit tests and packages AMP onto Alfresco WAR in target/
|
||||||
|
- mvn integration-test -Pamp-to-war --> Runs unit tests, packages AMP onto Alfresco WAR and runs in Jetty + H2 embedded for integration testing
|
||||||
|
- mvn integration-test -Pamp-to-war -Dalfresco.client.war=share --> Runs unit tests, packages AMP onto Share WAR and runs in Jetty + H2 embedded for integration testing
|
||||||
|
- mvn clean -Ppurge --> Removes DB, alf_data and log files
|
||||||
|
|
||||||
|
Properties management
|
||||||
|
---------------------
|
||||||
|
Properties are configurable at 2 levels:
|
||||||
|
- POM properties
|
||||||
|
- direclty in *.properties, particularly
|
||||||
|
- src/main/amp/module.properties (filtered and packaged in the AMP)
|
||||||
|
- src/test/properties/<env>/alfresco-global.properties (environment dependent properties for WAR run embedded)
|
||||||
|
|
||||||
|
Useful properties that can be fully controlled directly in the POM are:
|
||||||
|
|
||||||
|
alfresco.data.location (default = alf_data_dev)
|
||||||
|
alfresco.db.name (default = alf_dev)
|
||||||
|
app.log.dir (default = target/)
|
||||||
|
app.log.root.level (default = INFO)
|
||||||
|
|
||||||
|
***************************
|
||||||
|
Maven Alfresco SDK Overview
|
||||||
|
***************************
|
||||||
|
|
||||||
|
The Maven Alfresco SDK is an effort that have been developing in the last 5 years - mostly driven by community efforts on
|
||||||
|
Google Code (http://code.google.com/p/maven-alfresco-archetypes) - which delivers archetypes for building Alfresco
|
||||||
|
integration project with Maven; builds are based on Alfresco Community and Enterprise artifacts released on the
|
||||||
|
Alfresco Artifacts Repository at https://artifacts.alfresco.com
|
||||||
|
|
||||||
|
The Maven Alfresco SDK is full rewriting of the Maven Alfresco Lifecyle (latest version 3.9.1) and it's composed of 3 efforts:
|
||||||
|
|
||||||
|
a) POM files:
|
||||||
|
- alfresco-sdk-parent: provides lifecycle features and behaviors for typical Alfresco development projects
|
||||||
|
- alfresco-platform-distribution: describes and provides dependencyManagement for artifacts of each Alfresco release
|
||||||
|
|
||||||
|
b) alfresco-maven-plugin:
|
||||||
|
- defines the AMP packaging type and lifecycle in Maven
|
||||||
|
- emdeds Alfresco MMT to provide safe installation of single / multiple AMP -> WAR
|
||||||
|
- will potentially grow including more use cases around Alfresco / Maven
|
||||||
|
|
||||||
|
c) The definition of (initially 2) archetypes that show some simple project's configuration using
|
||||||
|
the parent POMs
|
||||||
|
- AMP archetype (this archetype)
|
||||||
|
- All-in-One multi-module archetype including
|
||||||
|
- Alfresco Repository AMP
|
||||||
|
- Alfresco Repository extension project (WAR, also depending on the AMP)
|
||||||
|
- Share customization project (WAR)
|
||||||
|
- Solr customization project (WAR)
|
||||||
|
- Jetty embedded runner for the full platform (mvn clean install -Prun)
|
||||||
|
|
||||||
|
|
||||||
|
****************************************
|
||||||
|
Why using this SDK might be a good idea?
|
||||||
|
****************************************
|
||||||
|
The main reported advantages of using the Maven Alfresco SDK are:
|
||||||
|
|
||||||
|
- IDE-independent SDK, all build-related features are provided by Apache Maven, which is the only
|
||||||
|
prerequisite to use this SDK
|
||||||
|
|
||||||
|
- No IDE manual configuration, all modern IDEs offer advanced Maven integrations, so
|
||||||
|
feel free to use Eclipse, IntelliJ, or any other IDE to write your code and leverage Maven
|
||||||
|
|
||||||
|
- Process ready: scales from quick start rapid application development, to be seamlessly
|
||||||
|
integrated in enterprise devleopment processes like Continuous Integration and Release
|
||||||
|
|
||||||
|
- Language independent, you don't like Maven? You can still use Ant, Ivy, Buildr, Gradle, Leiningen or any other build
|
||||||
|
system that is compatible with Maven artifact resolution mechanism; just configure artifacts.alfresco.com as (one of) your
|
||||||
|
Maven repositories and you're ready to go
|
||||||
|
|
||||||
|
- Javadoc and Sources support, provided by artifacts.alfresco.com related Maven artifacts; you don't need to manually
|
||||||
|
configure your IDE to attach (manually downloaded) sources to your (manually downloaded) binaries.
|
||||||
|
|
||||||
|
- Clean and readable, the build logic related with OOTB Alfresco features is wrapped in 50 lines of pom.xml
|
||||||
|
|
||||||
|
- Advanced build functionality, inherited by your parent POMs you can use embedded databases and j2ee
|
||||||
|
containers with (almost) no configuration at all, among other features exposed below.
|
||||||
|
|
||||||
|
- One mvn command to generate, one mvn command to run embedded, this is all you need to do to have a local Alfresco running
|
||||||
|
on an empty laptop
|
||||||
|
|
||||||
|
- Supports community and enterprise flawlessly, allowing to switch one to another very easily
|
@@ -0,0 +1,16 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">
|
||||||
|
|
||||||
|
<Configure id="Server" class="org.mortbay.jetty.Server">
|
||||||
|
<New id="myDataSource"
|
||||||
|
class="org.mortbay.jetty.plus.naming.Resource">
|
||||||
|
<Arg>jdbc/dataSource</Arg>
|
||||||
|
<Arg>
|
||||||
|
<New class="${alfresco.db.datasource.class}">
|
||||||
|
<Set name="URL">${alfresco.db.url}</Set>
|
||||||
|
<Set name="User">${alfresco.db.username}</Set>
|
||||||
|
<Set name="Password">${alfresco.db.password}</Set>
|
||||||
|
</New>
|
||||||
|
</Arg>
|
||||||
|
</New>
|
||||||
|
</Configure>
|
@@ -0,0 +1,85 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<groupId>${groupId}</groupId>
|
||||||
|
<artifactId>${artifactId}</artifactId>
|
||||||
|
<version>${version}</version>
|
||||||
|
<name>${artifactId} AMP project</name>
|
||||||
|
<packaging>amp</packaging>
|
||||||
|
<description>Manages the lifecycle of the ${artifactId} AMP (Alfresco Module Package)</description>
|
||||||
|
|
||||||
|
<parent>
|
||||||
|
<groupId>org.alfresco.maven</groupId>
|
||||||
|
<artifactId>alfresco-sdk-parent</artifactId>
|
||||||
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
</parent>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
| SDK properties have sensible defaults in the SDK parent,
|
||||||
|
| but you can override the properties below to use another version.
|
||||||
|
| For more available properties see the alfresco-sdk-parent POM.
|
||||||
|
-->
|
||||||
|
<properties>
|
||||||
|
<alfresco.groupId>${alfresco_target_groupId}</alfresco.groupId>
|
||||||
|
<alfresco.version>${alfresco_target_version}</alfresco.version>
|
||||||
|
<app.log.root.level>WARN</app.log.root.level>
|
||||||
|
<alfresco.data.location>alf_data_dev</alfresco.data.location>
|
||||||
|
<!-- Defines the target WAR for this AMP. Allowed values: alfresco | share -->
|
||||||
|
<!-- Defaults to a repository AMP -->
|
||||||
|
<alfresco.client.war>alfresco</alfresco.client.war>
|
||||||
|
<!-- This controls which properties will be picked in src/test/properties for embedded run -->
|
||||||
|
<env>local</env>
|
||||||
|
</properties>
|
||||||
|
|
||||||
|
<!-- Here we realize the connection with the Alfresco selected platform
|
||||||
|
(e.g.version and edition) -->
|
||||||
|
<dependencyManagement>
|
||||||
|
<dependencies>
|
||||||
|
<!-- This will import the dependencyManagement for all artifacts in the selected Alfresco version/edition
|
||||||
|
(see http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Importing_Dependencies)
|
||||||
|
NOTE: You still need to define dependencies in your POM, but you can omit version as it's enforced by this dependencyManagement. NOTE: It defaults
|
||||||
|
to the latest version this SDK pom has been tested with, but alfresco version can/should be overridden in your project's pom -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>${alfresco.groupId}</groupId>
|
||||||
|
<artifactId>alfresco-platform-distribution</artifactId>
|
||||||
|
<version>${alfresco.version}</version>
|
||||||
|
<type>pom</type>
|
||||||
|
<scope>import</scope>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</dependencyManagement>
|
||||||
|
<!-- Following dependencies are needed for compiling Java code in src/main/java;
|
||||||
|
<scope>provided</scope> is inherited for each of the following;
|
||||||
|
for more info, please refer to alfresco-platform-distribution POM -->
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>${alfresco.groupId}</groupId>
|
||||||
|
<artifactId>alfresco-repository</artifactId>
|
||||||
|
</dependency>
|
||||||
|
<!-- Test dependencies -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>junit</groupId>
|
||||||
|
<artifactId>junit</artifactId>
|
||||||
|
<version>4.8.1</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
|
||||||
|
<!-- This repository is only needed to retrieve Alfresco parent POM.
|
||||||
|
NOTE: This can be removed when/if Alfresco will be on Maven Central -->
|
||||||
|
<repositories>
|
||||||
|
<repository>
|
||||||
|
<id>alfresco-public</id>
|
||||||
|
<url>https://artifacts.alfresco.com/nexus/content/groups/public</url>
|
||||||
|
</repository>
|
||||||
|
<repository>
|
||||||
|
<id>alfresco-public-snapshots</id>
|
||||||
|
<url>https://artifacts.alfresco.com/nexus/content/groups/public-snapshots</url>
|
||||||
|
<snapshots>
|
||||||
|
<enabled>true</enabled>
|
||||||
|
<updatePolicy>daily</updatePolicy>
|
||||||
|
</snapshots>
|
||||||
|
</repository>
|
||||||
|
</repositories>
|
||||||
|
</project>
|
@@ -0,0 +1,35 @@
|
|||||||
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
|
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>
|
||||||
|
<!--
|
||||||
|
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.
|
||||||
|
-->
|
||||||
|
<beans>
|
||||||
|
|
||||||
|
<!-- A simple class that is initialized by Spring -->
|
||||||
|
<bean id="changeme.exampleBean" class="org.alfresco.demoamp.Demo" init-method="init" />
|
||||||
|
|
||||||
|
<!-- A simple module component that will be executed once -->
|
||||||
|
<bean id="changeme.exampleComponent" class="org.alfresco.demoamp.DemoComponent" parent="module.baseComponent" >
|
||||||
|
<property name="moduleId" value="${project.artifactId}" /> <!-- See module.properties -->
|
||||||
|
<property name="name" value="exampleComponent" />
|
||||||
|
<property name="description" value="A demonstration component" />
|
||||||
|
<property name="sinceVersion" value="2.0" />
|
||||||
|
<property name="appliesFromVersion" value="2.0" />
|
||||||
|
<property name="nodeService" ref="NodeService" />
|
||||||
|
<property name="nodeLocatorService" ref="nodeLocatorService" />
|
||||||
|
</bean>
|
||||||
|
|
||||||
|
</beans>
|
@@ -0,0 +1,40 @@
|
|||||||
|
# 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.org.alfresco.demoamp.DemoComponent=${module.log.level}
|
@@ -0,0 +1,24 @@
|
|||||||
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
|
<!--
|
||||||
|
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
contributor license agreements.
|
||||||
|
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.
|
||||||
|
|
||||||
|
-->
|
||||||
|
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>
|
||||||
|
|
||||||
|
<beans>
|
||||||
|
<!-- This is filtered by Maven at build time, so that module name is single sourced. -->
|
||||||
|
<import resource="classpath:alfresco/module/${project.artifactId}/context/service-context.xml" />
|
||||||
|
|
||||||
|
</beans>
|
@@ -0,0 +1,4 @@
|
|||||||
|
# Define here logging properties for your AMP specific classes
|
||||||
|
# This will end up in alfresco.war/WEB-INF/classes/alfresco/module/log4j.properties
|
||||||
|
# and loaded as per http://wiki.alfresco.com/wiki/Developing_an_Alfresco_Module#log4j.properties
|
||||||
|
log4j.logger.org.alfresco.demoamp=DEBUG
|
@@ -0,0 +1,48 @@
|
|||||||
|
# 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.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# SDK Sample module
|
||||||
|
|
||||||
|
# ==== Beginning of Alfresco required/optional properties ====== #
|
||||||
|
# NB: These properties are filtered at build time by Maven, single
|
||||||
|
# sourcing from POM properties
|
||||||
|
module.id=${project.artifactId}
|
||||||
|
#module.aliases=myModule-123, my-module
|
||||||
|
module.title=${project.name}
|
||||||
|
module.description=${project.description}
|
||||||
|
module.version=${noSnapshotVersion}
|
||||||
|
|
||||||
|
# The following optional properties can be used to prevent the module from being added
|
||||||
|
# to inappropriate versions of the WAR file.
|
||||||
|
# module.repo.version.min=2.0
|
||||||
|
# module.repo.version.max=2.1
|
||||||
|
|
||||||
|
# FIXME: This dependencies should come out of mvn dependencies on amp
|
||||||
|
|
||||||
|
# The following describe dependencies on other modules
|
||||||
|
# Depends on net.sf.myproject.module.SupportModuleA version ${version} or later
|
||||||
|
# module.depends.net.sf.myproject.module.SupportModuleA=${version}-*
|
||||||
|
# Depends on net.sf.myproject.module.SupportModuleA version ${version} to 2.0
|
||||||
|
# module.depends.net.sf.myproject.module.SupportModuleB=${version}-2.0
|
||||||
|
# Depends on net.sf.myproject.module.SupportModuleC - any version
|
||||||
|
# module.depends.net.sf.myproject.module.SupportModuleB=*
|
||||||
|
|
||||||
|
|
||||||
|
# ==== End of Alfresco required/optional properties ======= #
|
||||||
|
|
||||||
|
|
||||||
|
# ==== Beginning of module required properties/optional ====== #
|
@@ -0,0 +1,16 @@
|
|||||||
|
/*
|
||||||
|
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.
|
||||||
|
*/
|
@@ -0,0 +1,19 @@
|
|||||||
|
#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.
|
||||||
|
-->
|
@@ -0,0 +1,2 @@
|
|||||||
|
This folder (root in the AMP) gets mapped automagically in WEB-INF/licenses
|
||||||
|
by the MMT or the alfresco-maven-plugin
|
@@ -0,0 +1,16 @@
|
|||||||
|
/*
|
||||||
|
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.
|
||||||
|
*/
|
@@ -0,0 +1,38 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2005-2007 Alfresco Software Limited.
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU General Public License
|
||||||
|
* as published by the Free Software Foundation; either version 2
|
||||||
|
* of the License, or (at your option) any later version.
|
||||||
|
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
|
|
||||||
|
* As a special exception to the terms and conditions of version 2.0 of
|
||||||
|
* the GPL, you may redistribute this Program in connection with Free/Libre
|
||||||
|
* and Open Source Software ("FLOSS") applications as described in Alfresco's
|
||||||
|
* FLOSS exception. You should have recieved a copy of the text describing
|
||||||
|
* the FLOSS exception, and it is also available here:
|
||||||
|
* http://www.alfresco.com/legal/licensing"
|
||||||
|
*/
|
||||||
|
package org.alfresco.demoamp;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This class does nothing except dump some output to <i>system.out</i>.
|
||||||
|
* NB: This code is taken from Alfresco Eclipse SDK Samples
|
||||||
|
* @author Derek Hulley
|
||||||
|
*/
|
||||||
|
public class Demo
|
||||||
|
{
|
||||||
|
public void init()
|
||||||
|
{
|
||||||
|
System.out.println("SDK Demo AMP class has been loaded");
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,85 @@
|
|||||||
|
/*
|
||||||
|
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.
|
||||||
|
*/
|
||||||
|
package org.alfresco.demoamp;
|
||||||
|
|
||||||
|
import org.alfresco.model.ContentModel;
|
||||||
|
import org.alfresco.repo.module.AbstractModuleComponent;
|
||||||
|
import org.alfresco.repo.nodelocator.NodeLocatorService;
|
||||||
|
import org.alfresco.service.cmr.repository.NodeRef;
|
||||||
|
import org.alfresco.service.cmr.repository.NodeService;
|
||||||
|
import org.alfresco.service.cmr.repository.StoreRef;
|
||||||
|
import org.apache.commons.logging.Log;
|
||||||
|
import org.apache.commons.logging.LogFactory;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A basic component that will be started for this module.
|
||||||
|
* Uses the NodeLocatorService to easily find nodes and the
|
||||||
|
* NodeService to display them
|
||||||
|
*
|
||||||
|
* @author Gabriele Columbro
|
||||||
|
* @author Maurizio Pillitu
|
||||||
|
*/
|
||||||
|
public class DemoComponent extends AbstractModuleComponent
|
||||||
|
{
|
||||||
|
Log log = LogFactory.getLog(DemoComponent.class);
|
||||||
|
|
||||||
|
private NodeService nodeService;
|
||||||
|
|
||||||
|
private NodeLocatorService nodeLocatorService;
|
||||||
|
|
||||||
|
public void setNodeService(NodeService nodeService) {
|
||||||
|
this.nodeService = nodeService;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setNodeLocatorService(NodeLocatorService nodeLocatorService) {
|
||||||
|
this.nodeLocatorService = nodeLocatorService;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Bogus component execution
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
protected void executeInternal() throws Throwable
|
||||||
|
{
|
||||||
|
System.out.println("DemoComponent has been executed");
|
||||||
|
log.debug("Test debug logging. Congratulation your AMP is working");
|
||||||
|
log.info("This is only for information purposed. Better remove me from the log in Production");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This is a demo service interaction with Alfresco Foundation API.
|
||||||
|
* This sample method returns the number of child nodes of a certain type
|
||||||
|
* under a certain node.
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public int childNodesCount(NodeRef nodeRef)
|
||||||
|
{
|
||||||
|
return nodeService.countChildAssocs(nodeRef, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the NodeRef of "Company Home"
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public NodeRef getCompanyHome()
|
||||||
|
|
||||||
|
{
|
||||||
|
return nodeLocatorService.getNode("companyhome", null, null);
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,77 @@
|
|||||||
|
package org.alfresco.demoamp.test;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertEquals;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertNotNull;
|
||||||
|
|
||||||
|
import org.alfresco.demoamp.DemoComponent;
|
||||||
|
import org.alfresco.model.ContentModel;
|
||||||
|
import org.alfresco.repo.security.authentication.AuthenticationUtil;
|
||||||
|
import org.alfresco.service.cmr.repository.NodeRef;
|
||||||
|
import org.alfresco.service.cmr.repository.NodeService;
|
||||||
|
import org.alfresco.util.ApplicationContextHelper;
|
||||||
|
import org.apache.log4j.Logger;
|
||||||
|
import org.junit.BeforeClass;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.springframework.context.ApplicationContext;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A simple class demonstrating how to run out-of-container tests
|
||||||
|
* loading Alfresco application context.
|
||||||
|
*
|
||||||
|
* @author columbro
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class DemoComponentTest {
|
||||||
|
|
||||||
|
private static final String ADMIN_USER_NAME = "admin";
|
||||||
|
|
||||||
|
static Logger log = Logger.getLogger(DemoComponentTest.class);
|
||||||
|
|
||||||
|
protected static ApplicationContext applicationContext;
|
||||||
|
|
||||||
|
protected static DemoComponent demoComponent;
|
||||||
|
|
||||||
|
protected static NodeService nodeService;
|
||||||
|
|
||||||
|
@BeforeClass
|
||||||
|
public static void initAppContext()
|
||||||
|
{
|
||||||
|
// TODO: Make testing properly working without need for helpers
|
||||||
|
// TODO: Provide this in an SDK base class
|
||||||
|
ApplicationContextHelper.setUseLazyLoading(false);
|
||||||
|
ApplicationContextHelper.setNoAutoStart(true);
|
||||||
|
applicationContext = ApplicationContextHelper.getApplicationContext(new String[] { "classpath:alfresco/application-context.xml" });
|
||||||
|
demoComponent = (DemoComponent) applicationContext.getBean("changeme.exampleComponent");
|
||||||
|
nodeService = (NodeService) applicationContext.getBean("NodeService");
|
||||||
|
AuthenticationUtil.setFullyAuthenticatedUser(ADMIN_USER_NAME);
|
||||||
|
log.debug("Sample test logging: If you see this message, means your unit test logging is properly configured. Change it in test-log4j.properties");
|
||||||
|
log.debug("Sample test logging: Application Context properly loaded");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testWiring() {
|
||||||
|
assertNotNull(demoComponent);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testGetCompanyHome() {
|
||||||
|
NodeRef companyHome = demoComponent.getCompanyHome();
|
||||||
|
assertNotNull(companyHome);
|
||||||
|
String companyHomeName = (String) nodeService.getProperty(companyHome, ContentModel.PROP_NAME);
|
||||||
|
assertNotNull(companyHomeName);
|
||||||
|
assertEquals("Company Home", companyHomeName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testChildNodesCount() {
|
||||||
|
NodeRef companyHome = demoComponent.getCompanyHome();
|
||||||
|
int childNodeCount = demoComponent.childNodesCount(companyHome);
|
||||||
|
assertNotNull(childNodeCount);
|
||||||
|
// There are 5 folders by default under Company Home
|
||||||
|
assertEquals(5, childNodeCount);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@@ -0,0 +1,59 @@
|
|||||||
|
# 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
|
||||||
|
# -------------------
|
||||||
|
|
||||||
|
# Sample custom content and index data location
|
||||||
|
# This will create alf_data Relative to appserver run folder
|
||||||
|
# In this default file we take the property from the POM (for compatbility with local jetty and jboss deployments) but it can also be edited here.
|
||||||
|
dir.root=${alfresco.data.location}
|
||||||
|
# Allowed values are: NONE, AUTO, FULL
|
||||||
|
index.recovery.mode=NONE
|
||||||
|
# As we run embedded, we set Lucene
|
||||||
|
index.subsystem.name=lucene
|
||||||
|
|
||||||
|
#dir.keystore=.
|
||||||
|
#keystore.password=storepassword
|
||||||
|
#metadata.password=metapassword
|
||||||
|
|
||||||
|
# Fail or not when there are node integrity checker errors
|
||||||
|
integrity.failOnError=true
|
||||||
|
|
||||||
|
# Database connection properties
|
||||||
|
# These are also filtered from Maven at build time from POM properties.
|
||||||
|
# Alternatively you can directly define them directly here
|
||||||
|
db.driver=${alfresco.db.datasource.class}
|
||||||
|
db.url=${alfresco.db.url}
|
||||||
|
db.username=${alfresco.db.username}
|
||||||
|
db.password=${alfresco.db.password}
|
||||||
|
db.pool.initial=10
|
||||||
|
db.pool.max=100
|
||||||
|
|
||||||
|
# File servers related properties
|
||||||
|
# For local builds we disable CIFS and FTP. Edit the following property to reenable them
|
||||||
|
smb.server.enabled=false
|
||||||
|
smb.server.name=CFS_SHARE_LOCAL
|
||||||
|
smb.server.domain=mycompany.com
|
||||||
|
smb.server.bindto=127.0.0.1
|
||||||
|
smb.tcpip.port=1445
|
||||||
|
netbios.session.port=1139
|
||||||
|
netbios.name.port=1137
|
||||||
|
netbios.datagram.port=1138
|
||||||
|
ftp.server.enables=false
|
||||||
|
ftp.port=1121
|
||||||
|
ftp.authenticator=alfresco
|
@@ -0,0 +1,266 @@
|
|||||||
|
# This is a full override of Alfresco 4.2.b log4j.properties
|
||||||
|
# This file overwrites the alfresco.war log4j.properties
|
||||||
|
|
||||||
|
# Set root logger level to error
|
||||||
|
log4j.rootLogger=${app.log.root.level}, Console, File
|
||||||
|
|
||||||
|
###### Console appender definition #######
|
||||||
|
|
||||||
|
# All outputs currently set to be a ConsoleAppender.
|
||||||
|
log4j.appender.Console=org.apache.log4j.ConsoleAppender
|
||||||
|
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
|
||||||
|
|
||||||
|
# use log4j NDC to replace %x with tenant domain / username
|
||||||
|
log4j.appender.Console.layout.ConversionPattern=%d{ISO8601} %x %-5p [%c{3}] [%t] %m%n
|
||||||
|
#log4j.appender.Console.layout.ConversionPattern=%d{ABSOLUTE} %-5p [%c] %m%n
|
||||||
|
|
||||||
|
###### File appender definition #######
|
||||||
|
log4j.appender.File=org.apache.log4j.DailyRollingFileAppender
|
||||||
|
log4j.appender.File.File=${app.log.dir}alfresco.log
|
||||||
|
log4j.appender.File.Append=true
|
||||||
|
log4j.appender.File.DatePattern='.'yyyy-MM-dd
|
||||||
|
log4j.appender.File.layout=org.apache.log4j.PatternLayout
|
||||||
|
log4j.appender.File.layout.ConversionPattern=%d{ABSOLUTE} %-5p [%c] %m%n
|
||||||
|
|
||||||
|
###### Hibernate specific appender definition #######
|
||||||
|
#log4j.appender.file=org.apache.log4j.FileAppender
|
||||||
|
#log4j.appender.file.File=hibernate.log
|
||||||
|
#log4j.appender.file.layout=org.apache.log4j.PatternLayout
|
||||||
|
#log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
|
||||||
|
|
||||||
|
###### Log level overrides #######
|
||||||
|
|
||||||
|
# Commented-in loggers will be exposed as JMX MBeans (refer to org.alfresco.repo.admin.Log4JHierarchyInit)
|
||||||
|
# Hence, generally useful loggers should be listed with at least ERROR level to allow simple runtime
|
||||||
|
# control of the level via a suitable JMX Console. Also, any other loggers can be added transiently via
|
||||||
|
# Log4j addLoggerMBean as long as the logger exists and has been loaded.
|
||||||
|
|
||||||
|
# Hibernate
|
||||||
|
log4j.logger.org.hibernate=error
|
||||||
|
log4j.logger.org.hibernate.util.JDBCExceptionReporter=fatal
|
||||||
|
log4j.logger.org.hibernate.event.def.AbstractFlushingEventListener=fatal
|
||||||
|
log4j.logger.org.hibernate.type=warn
|
||||||
|
log4j.logger.org.hibernate.cfg.SettingsFactory=warn
|
||||||
|
|
||||||
|
# Spring
|
||||||
|
log4j.logger.org.springframework=warn
|
||||||
|
# Turn off Spring remoting warnings that should really be info or debug.
|
||||||
|
log4j.logger.org.springframework.remoting.support=error
|
||||||
|
log4j.logger.org.springframework.util=error
|
||||||
|
|
||||||
|
# Axis/WSS4J
|
||||||
|
log4j.logger.org.apache.axis=info
|
||||||
|
log4j.logger.org.apache.ws=info
|
||||||
|
|
||||||
|
# CXF
|
||||||
|
log4j.logger.org.apache.cxf=error
|
||||||
|
|
||||||
|
# MyFaces
|
||||||
|
log4j.logger.org.apache.myfaces.util.DebugUtils=info
|
||||||
|
log4j.logger.org.apache.myfaces.el.VariableResolverImpl=error
|
||||||
|
log4j.logger.org.apache.myfaces.application.jsp.JspViewHandlerImpl=error
|
||||||
|
log4j.logger.org.apache.myfaces.taglib=error
|
||||||
|
|
||||||
|
# OpenOfficeConnection
|
||||||
|
log4j.logger.net.sf.jooreports.openoffice.connection=fatal
|
||||||
|
|
||||||
|
# log prepared statement cache activity ###
|
||||||
|
log4j.logger.org.hibernate.ps.PreparedStatementCache=info
|
||||||
|
|
||||||
|
# Alfresco
|
||||||
|
log4j.logger.org.alfresco=error
|
||||||
|
log4j.logger.org.alfresco.repo.admin=info
|
||||||
|
log4j.logger.org.alfresco.repo.cache.TransactionalCache=warn
|
||||||
|
log4j.logger.org.alfresco.repo.model.filefolder=warn
|
||||||
|
log4j.logger.org.alfresco.repo.tenant=info
|
||||||
|
log4j.logger.org.alfresco.repo.avm=info
|
||||||
|
log4j.logger.org.alfresco.config=warn
|
||||||
|
log4j.logger.org.alfresco.config.JndiObjectFactoryBean=warn
|
||||||
|
log4j.logger.org.alfresco.config.JBossEnabledWebApplicationContext=warn
|
||||||
|
log4j.logger.org.alfresco.repo.management.subsystems=warn
|
||||||
|
log4j.logger.org.alfresco.repo.management.subsystems.ChildApplicationContextFactory=info
|
||||||
|
log4j.logger.org.alfresco.repo.management.subsystems.ChildApplicationContextFactory$ChildApplicationContext=warn
|
||||||
|
log4j.logger.org.alfresco.repo.security.sync=info
|
||||||
|
log4j.logger.org.alfresco.repo.security.person=info
|
||||||
|
|
||||||
|
log4j.logger.org.alfresco.sample=info
|
||||||
|
log4j.logger.org.alfresco.web=info
|
||||||
|
#log4j.logger.org.alfresco.web.app.AlfrescoNavigationHandler=debug
|
||||||
|
#log4j.logger.org.alfresco.web.ui.repo.component.UIActions=debug
|
||||||
|
#log4j.logger.org.alfresco.web.ui.repo.tag.PageTag=debug
|
||||||
|
#log4j.logger.org.alfresco.web.bean.clipboard=debug
|
||||||
|
log4j.logger.org.alfresco.repo.webservice=info
|
||||||
|
log4j.logger.org.alfresco.service.descriptor.DescriptorService=info
|
||||||
|
#log4j.logger.org.alfresco.web.page=debug
|
||||||
|
|
||||||
|
log4j.logger.org.alfresco.repo.importer.ImporterBootstrap=error
|
||||||
|
#log4j.logger.org.alfresco.repo.importer.ImporterBootstrap=info
|
||||||
|
|
||||||
|
log4j.logger.org.alfresco.web.ui.common.Utils=error
|
||||||
|
#log4j.logger.org.alfresco.web.ui.common.Utils=info
|
||||||
|
|
||||||
|
log4j.logger.org.alfresco.repo.admin.patch.PatchExecuter=info
|
||||||
|
log4j.logger.org.alfresco.repo.domain.patch.ibatis.PatchDAOImpl=info
|
||||||
|
|
||||||
|
# Specific patches
|
||||||
|
log4j.logger.org.alfresco.repo.admin.patch.impl.DeploymentMigrationPatch=info
|
||||||
|
log4j.logger.org.alfresco.repo.version.VersionMigrator=info
|
||||||
|
log4j.logger.org.alfresco.repo.admin.patch.impl.ResetWCMToGroupBasedPermissionsPatch=info
|
||||||
|
|
||||||
|
log4j.logger.org.alfresco.repo.module.ModuleServiceImpl=info
|
||||||
|
log4j.logger.org.alfresco.repo.domain.schema.SchemaBootstrap=info
|
||||||
|
log4j.logger.org.alfresco.repo.admin.ConfigurationChecker=info
|
||||||
|
log4j.logger.org.alfresco.repo.node.index.AbstractReindexComponent=warn
|
||||||
|
log4j.logger.org.alfresco.repo.node.index.IndexTransactionTracker=warn
|
||||||
|
log4j.logger.org.alfresco.repo.node.index.FullIndexRecoveryComponent=info
|
||||||
|
log4j.logger.org.alfresco.repo.node.index.AVMFullIndexRecoveryComponent=info
|
||||||
|
log4j.logger.org.alfresco.util.OpenOfficeConnectionTester=info
|
||||||
|
log4j.logger.org.alfresco.repo.node.db.hibernate.HibernateNodeDaoServiceImpl=warn
|
||||||
|
log4j.logger.org.alfresco.repo.domain.hibernate.DirtySessionMethodInterceptor=warn
|
||||||
|
log4j.logger.org.alfresco.repo.transaction.RetryingTransactionHelper=warn
|
||||||
|
log4j.logger.org.alfresco.util.transaction.SpringAwareUserTransaction.trace=warn
|
||||||
|
log4j.logger.org.alfresco.util.AbstractTriggerBean=warn
|
||||||
|
log4j.logger.org.alfresco.enterprise.repo.cache.cluster.KeepAliveHeartbeatReceiver=info
|
||||||
|
log4j.logger.org.alfresco.repo.version.Version2ServiceImpl=warn
|
||||||
|
|
||||||
|
#log4j.logger.org.alfresco.web.app.DebugPhaseListener=debug
|
||||||
|
|
||||||
|
log4j.logger.org.alfresco.repo.workflow=info
|
||||||
|
|
||||||
|
# CIFS server debugging
|
||||||
|
log4j.logger.org.alfresco.smb.protocol=error
|
||||||
|
#log4j.logger.org.alfresco.smb.protocol.auth=debug
|
||||||
|
#log4j.logger.org.alfresco.acegi=debug
|
||||||
|
|
||||||
|
# FTP server debugging
|
||||||
|
log4j.logger.org.alfresco.ftp.protocol=error
|
||||||
|
#log4j.logger.org.alfresco.ftp.server=debug
|
||||||
|
|
||||||
|
# WebDAV debugging
|
||||||
|
#log4j.logger.org.alfresco.webdav.protocol=debug
|
||||||
|
log4j.logger.org.alfresco.webdav.protocol=error
|
||||||
|
|
||||||
|
# NTLM servlet filters
|
||||||
|
#log4j.logger.org.alfresco.web.app.servlet.NTLMAuthenticationFilter=debug
|
||||||
|
#log4j.logger.org.alfresco.repo.webdav.auth.NTLMAuthenticationFilter=debug
|
||||||
|
|
||||||
|
# Kerberos servlet filters
|
||||||
|
#log4j.logger.org.alfresco.web.app.servlet.KerberosAuthenticationFilter=debug
|
||||||
|
#log4j.logger.org.alfresco.repo.webdav.auth.KerberosAuthenticationFilter=debug
|
||||||
|
|
||||||
|
# File servers
|
||||||
|
log4j.logger.org.alfresco.fileserver=warn
|
||||||
|
|
||||||
|
# Repo filesystem debug logging
|
||||||
|
#log4j.logger.org.alfresco.filesys.repo.ContentDiskDriver=debug
|
||||||
|
|
||||||
|
# AVM filesystem debug logging
|
||||||
|
#log4j.logger.org.alfresco.filesys.avm.AVMDiskDriver=debug
|
||||||
|
|
||||||
|
# Integrity message threshold - if 'failOnViolation' is off, then WARNINGS are generated
|
||||||
|
log4j.logger.org.alfresco.repo.node.integrity=ERROR
|
||||||
|
|
||||||
|
# Indexer debugging
|
||||||
|
log4j.logger.org.alfresco.repo.search.Indexer=error
|
||||||
|
#log4j.logger.org.alfresco.repo.search.Indexer=debug
|
||||||
|
|
||||||
|
log4j.logger.org.alfresco.repo.search.impl.lucene.index=error
|
||||||
|
log4j.logger.org.alfresco.repo.search.impl.lucene.fts.FullTextSearchIndexerImpl=warn
|
||||||
|
#log4j.logger.org.alfresco.repo.search.impl.lucene.index=DEBUG
|
||||||
|
|
||||||
|
# Audit debugging
|
||||||
|
# log4j.logger.org.alfresco.repo.audit=DEBUG
|
||||||
|
# log4j.logger.org.alfresco.repo.audit.model=DEBUG
|
||||||
|
|
||||||
|
# Forms debugging
|
||||||
|
# log4j.logger.org.alfresco.web.forms=debug
|
||||||
|
# log4j.logger.org.chiba.xml.xforms=debug
|
||||||
|
log4j.logger.org.alfresco.web.forms.xforms.XFormsBean=error
|
||||||
|
log4j.logger.org.alfresco.web.forms.XSLTRenderingEngine=error
|
||||||
|
|
||||||
|
# Property sheet and modelling debugging
|
||||||
|
# change to error to hide the warnings about missing properties and associations
|
||||||
|
log4j.logger.alfresco.missingProperties=warn
|
||||||
|
log4j.logger.org.alfresco.web.ui.repo.component.property.UIChildAssociation=warn
|
||||||
|
log4j.logger.org.alfresco.web.ui.repo.component.property.UIAssociation=warn
|
||||||
|
#log4j.logger.org.alfresco.web.ui.repo.component.property=debug
|
||||||
|
|
||||||
|
# Dictionary/Model debugging
|
||||||
|
log4j.logger.org.alfresco.repo.dictionary=warn
|
||||||
|
log4j.logger.org.alfresco.repo.dictionary.types.period=warn
|
||||||
|
|
||||||
|
# Virtualization Server Registry
|
||||||
|
log4j.logger.org.alfresco.mbeans.VirtServerRegistry=error
|
||||||
|
|
||||||
|
# Spring context runtime property setter
|
||||||
|
log4j.logger.org.alfresco.util.RuntimeSystemPropertiesSetter=info
|
||||||
|
|
||||||
|
# Debugging options for clustering
|
||||||
|
log4j.logger.org.alfresco.repo.content.ReplicatingContentStore=error
|
||||||
|
log4j.logger.org.alfresco.repo.content.replication=error
|
||||||
|
|
||||||
|
#log4j.logger.org.alfresco.repo.deploy.DeploymentServiceImpl=debug
|
||||||
|
|
||||||
|
# Activity service
|
||||||
|
log4j.logger.org.alfresco.repo.activities=warn
|
||||||
|
|
||||||
|
# User usage tracking
|
||||||
|
log4j.logger.org.alfresco.repo.usage=info
|
||||||
|
|
||||||
|
# Sharepoint
|
||||||
|
log4j.logger.org.alfresco.module.vti=info
|
||||||
|
|
||||||
|
# Forms Engine
|
||||||
|
log4j.logger.org.alfresco.repo.forms=info
|
||||||
|
log4j.logger.org.alfresco.web.config.forms=info
|
||||||
|
log4j.logger.org.alfresco.web.scripts.forms=info
|
||||||
|
|
||||||
|
# CMIS
|
||||||
|
log4j.logger.org.alfresco.opencmis=error
|
||||||
|
log4j.logger.org.alfresco.opencmis.AlfrescoCmisServiceInterceptor=error
|
||||||
|
log4j.logger.org.alfresco.cmis=error
|
||||||
|
log4j.logger.org.alfresco.cmis.dictionary=warn
|
||||||
|
log4j.logger.org.apache.chemistry.opencmis=info
|
||||||
|
|
||||||
|
# IMAP
|
||||||
|
log4j.logger.org.alfresco.repo.imap=info
|
||||||
|
|
||||||
|
# JBPM
|
||||||
|
# Note: non-fatal errors (eg. logged during job execution) should be handled by Alfresco's retrying transaction handler
|
||||||
|
log4j.logger.org.jbpm.graph.def.GraphElement=fatal
|
||||||
|
|
||||||
|
#log4j.logger.org.alfresco.repo.googledocs=debug
|
||||||
|
|
||||||
|
###### Scripting #######
|
||||||
|
|
||||||
|
# Web Framework
|
||||||
|
log4j.logger.org.springframework.extensions.webscripts=info
|
||||||
|
log4j.logger.org.springframework.extensions.webscripts.ScriptLogger=warn
|
||||||
|
log4j.logger.org.springframework.extensions.webscripts.ScriptDebugger=off
|
||||||
|
|
||||||
|
# Repository
|
||||||
|
log4j.logger.org.alfresco.repo.web.scripts=warn
|
||||||
|
log4j.logger.org.alfresco.repo.web.scripts.BaseWebScriptTest=info
|
||||||
|
log4j.logger.org.alfresco.repo.web.scripts.AlfrescoRhinoScriptDebugger=off
|
||||||
|
log4j.logger.org.alfresco.repo.jscript=error
|
||||||
|
log4j.logger.org.alfresco.repo.jscript.ScriptLogger=warn
|
||||||
|
log4j.logger.org.alfresco.repo.cmis.rest.CMISTest=info
|
||||||
|
|
||||||
|
log4j.logger.org.alfresco.repo.avm.actions=info
|
||||||
|
|
||||||
|
# Freemarker
|
||||||
|
# Note the freemarker.runtime logger is used to log non-fatal errors that are handled by Alfresco's retrying transaction handler
|
||||||
|
log4j.logger.freemarker.runtime=
|
||||||
|
|
||||||
|
# Metadata extraction
|
||||||
|
log4j.logger.org.alfresco.repo.content.metadata.AbstractMappingMetadataExtracter=warn
|
||||||
|
|
||||||
|
# Reduces PDFont error level due to ALF-7105
|
||||||
|
log4j.logger.org.apache.pdfbox.pdmodel.font.PDSimpleFont=fatal
|
||||||
|
log4j.logger.org.apache.pdfbox.pdmodel.font.PDFont=fatal
|
||||||
|
log4j.logger.org.apache.pdfbox.pdmodel.font.PDCIDFont=fatal
|
||||||
|
|
||||||
|
# no index support
|
||||||
|
log4j.logger.org.alfresco.repo.search.impl.noindex.NoIndexIndexer=fatal
|
||||||
|
log4j.logger.org.alfresco.repo.search.impl.noindex.NoIndexSearchService=fatal
|
||||||
|
log4j.logger.org.alfresco.demoamp.test=DEBUG
|
@@ -0,0 +1,8 @@
|
|||||||
|
#Tue Oct 30 14:23:01 CET 2012
|
||||||
|
package=it.pkg
|
||||||
|
version=0.1-SNAPSHOT
|
||||||
|
groupId=archetype.it
|
||||||
|
alfresco_target_version=4.2.b
|
||||||
|
$=cat archetype.properties
|
||||||
|
alfresco_target_groupId=org.alfresco
|
||||||
|
artifactId=basic
|
@@ -0,0 +1,100 @@
|
|||||||
|
***************
|
||||||
|
What does it do
|
||||||
|
***************
|
||||||
|
|
||||||
|
The alfresco-maven-plugin provides the following features:
|
||||||
|
|
||||||
|
* Packages an AMP starting from a simple (and configurable) Maven project folder structure
|
||||||
|
* Performs AMP to WAR overlay by using the Alfresco Repository ModuleManagementTool and emulating the same process
|
||||||
|
during Alfresco boostrap
|
||||||
|
|
||||||
|
|
||||||
|
*****
|
||||||
|
Usage
|
||||||
|
*****
|
||||||
|
|
||||||
|
+ In order to build an AMP file, you must:
|
||||||
|
----
|
||||||
|
|
||||||
|
1. Define your POM as <packaging>amp</packaging>
|
||||||
|
|
||||||
|
2. Specify a module.properties file in the src/main/amp folder, containing the following properties:
|
||||||
|
module.id=${project.artifactId}
|
||||||
|
module.title=${project.name}
|
||||||
|
module.description=${project.description}
|
||||||
|
module.version=${project.version}
|
||||||
|
As you can see, the file is filtered with Maven project placeholders
|
||||||
|
|
||||||
|
3. Declare the alfresco-maven-plugin in your POM build section
|
||||||
|
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.alfresco.maven.plugin</groupId>
|
||||||
|
<artifactId>alfresco-maven-plugin</artifactId>
|
||||||
|
<version>0.7-SNAPSHOT</version>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
...
|
||||||
|
</build>
|
||||||
|
|
||||||
|
Always keep in mind the default project-to-AMP mapping:
|
||||||
|
* src/main/amp => /
|
||||||
|
* src/main/resources => /lib/amp-classes.jar
|
||||||
|
* src/main/java => /lib/amp-classes.kar
|
||||||
|
|
||||||
|
|
||||||
|
+ In order to overlay an existing Alfresco WAR file, you'll need the following elements:
|
||||||
|
----
|
||||||
|
|
||||||
|
1. Define the type of Alfresco WAR you want to overlay: share or alfresco
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<alfresco.client.war>share</alfresco.client.war>
|
||||||
|
</properties>
|
||||||
|
|
||||||
|
2. Define the following build behaviour
|
||||||
|
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-dependency-plugin</artifactId>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>unpack-alfresco</id>
|
||||||
|
<phase>prepare-package</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>unpack</goal>
|
||||||
|
</goals>
|
||||||
|
<configuration>
|
||||||
|
<outputDirectory>${project.build.directory}/${project.build.finalName}</outputDirectory>
|
||||||
|
<artifactItems>
|
||||||
|
<artifactItem>
|
||||||
|
<groupId>${alfresco.groupId}</groupId>
|
||||||
|
<artifactId>alfresco</artifactId>
|
||||||
|
<type>war</type>
|
||||||
|
<version>${alfresco.version}</version>
|
||||||
|
</artifactItem>
|
||||||
|
</artifactItems>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
<!-- All artifacts with AMP extensions are unpacked -->
|
||||||
|
<!-- using a WAR layout on an empty folder using alfresco-maven-plugin -->
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.alfresco.maven.plugin</groupId>
|
||||||
|
<artifactId>alfresco-maven-plugin</artifactId>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>amps-to-war-overlay</id>
|
||||||
|
<phase>prepare-package</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>install</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
@@ -0,0 +1,22 @@
|
|||||||
|
SHORT TERM (TODO):
|
||||||
|
* Review of the module.properties version replace. Can't it be just using resource filtering?
|
||||||
|
(i.e. a more similar approach to the buildnumber or nosnapshot plugin)
|
||||||
|
* Review the amp-to-war profile. When ran from an AMP project abuses of
|
||||||
|
the project.build.directory/project.build.finalName folder (both AMP and WAR content in there)
|
||||||
|
* Documentation
|
||||||
|
* Full release
|
||||||
|
- Alfresco POMs
|
||||||
|
- Developer & Parent POMs
|
||||||
|
- Archetypes
|
||||||
|
- Test test test
|
||||||
|
|
||||||
|
MID TERM
|
||||||
|
* Validate module.properties : make sure all properties are there and version is correct; if not, fix it
|
||||||
|
* Fail if module-context.xml is not present
|
||||||
|
* Implement <alfresco.version> and <alfresco.edition> configurations; based on that, the alfresco WAR dependency will be
|
||||||
|
included into the POM at runtime by the add-resources goal
|
||||||
|
* Test coverage (unit first, use mocking)
|
||||||
|
* Test AMP install with extensions from addons.alfresco.com
|
||||||
|
* Release alfresco-maven-plugin (on git - maven-alfresco-archetypes on Google Code)
|
||||||
|
* Finalize documentation and publish it (wiki.alfresco.com)
|
||||||
|
* Evaluate running JMeter Maven plugin in order to launch Alfresco test suites
|
@@ -0,0 +1,91 @@
|
|||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<groupId>org.alfresco.maven.plugin</groupId>
|
||||||
|
<artifactId>alfresco-maven-plugin</artifactId>
|
||||||
|
<packaging>maven-plugin</packaging>
|
||||||
|
<name>Alfresco Maven Plugin</name>
|
||||||
|
|
||||||
|
<parent>
|
||||||
|
<groupId>org.alfresco.maven</groupId>
|
||||||
|
<artifactId>alfresco-lifecycle-aggregator</artifactId>
|
||||||
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
<relativePath>../../pom.xml</relativePath>
|
||||||
|
</parent>
|
||||||
|
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-compiler-plugin</artifactId>
|
||||||
|
<version>2.5.1</version>
|
||||||
|
<configuration>
|
||||||
|
<source>1.6</source>
|
||||||
|
<target>1.6</target>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-plugin-plugin</artifactId>
|
||||||
|
<version>3.0</version>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>generated-helpmojo</id>
|
||||||
|
<goals>
|
||||||
|
<goal>helpmojo</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.maven</groupId>
|
||||||
|
<artifactId>maven-plugin-api</artifactId>
|
||||||
|
<version>3.0.4</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.maven</groupId>
|
||||||
|
<artifactId>maven-archiver</artifactId>
|
||||||
|
<version>2.5</version>
|
||||||
|
<exclusions>
|
||||||
|
<exclusion>
|
||||||
|
<artifactId>maven-core</artifactId>
|
||||||
|
<groupId>org.apache.maven</groupId>
|
||||||
|
</exclusion>
|
||||||
|
</exclusions>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.maven</groupId>
|
||||||
|
<artifactId>maven-artifact</artifactId>
|
||||||
|
<version>3.0.4</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.maven</groupId>
|
||||||
|
<artifactId>maven-core</artifactId>
|
||||||
|
<version>3.0.4</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>commons-io</groupId>
|
||||||
|
<artifactId>commons-io</artifactId>
|
||||||
|
<version>2.1</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.alfresco</groupId>
|
||||||
|
<artifactId>alfresco-mmt</artifactId>
|
||||||
|
<version>4.2.b</version>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
|
||||||
|
<reporting>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-plugin-plugin</artifactId>
|
||||||
|
<version>3.1</version>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</reporting>
|
||||||
|
</project>
|
@@ -0,0 +1,16 @@
|
|||||||
|
package org.alfresco.maven.plugin;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class holding all common well know constants for the AMP packaging/extraction process
|
||||||
|
* @author columbro
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class AmpModel {
|
||||||
|
|
||||||
|
public static final String AMP_FOLDER_LIB = "lib";
|
||||||
|
|
||||||
|
public static final List<String> EXTENSION_LIST = Arrays.asList(new String[] {"jar","ejb","ejb-client","test-jar"});
|
||||||
|
}
|
@@ -0,0 +1,243 @@
|
|||||||
|
package org.alfresco.maven.plugin;
|
||||||
|
|
||||||
|
import java.io.BufferedReader;
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileNotFoundException;
|
||||||
|
import java.io.FileReader;
|
||||||
|
import java.io.FileWriter;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.PrintWriter;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import org.alfresco.maven.plugin.archiver.AmpArchiver;
|
||||||
|
import org.apache.commons.io.FileUtils;
|
||||||
|
import org.apache.maven.archiver.MavenArchiveConfiguration;
|
||||||
|
import org.apache.maven.archiver.MavenArchiver;
|
||||||
|
import org.apache.maven.artifact.Artifact;
|
||||||
|
import org.apache.maven.artifact.resolver.filter.ScopeArtifactFilter;
|
||||||
|
import org.apache.maven.execution.MavenSession;
|
||||||
|
import org.apache.maven.plugin.AbstractMojo;
|
||||||
|
import org.apache.maven.plugin.MojoExecutionException;
|
||||||
|
import org.apache.maven.project.MavenProject;
|
||||||
|
import org.apache.maven.project.MavenProjectHelper;
|
||||||
|
import org.codehaus.plexus.archiver.jar.JarArchiver;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Builds an AMP archive of the current project's contents. By default,
|
||||||
|
* the location of the AMP root contents is ${project.build.directory}/${project.build.finalName}
|
||||||
|
* but it can be customised using <ampBuildDirectory> plugin's configuration.
|
||||||
|
* Java resources (in src/main/java and src/main/resources) are packages in a separate JAR file
|
||||||
|
* that is automatically bundled in the /lib folder of the AMP archive and it treated as build artifact
|
||||||
|
* (i.e. distributed on Maven repositories during deploy).
|
||||||
|
* Optionally you can include Maven dependencies into the /lib folder of the AMP archive
|
||||||
|
* and customise the classifier of both AMP and JAR archives being created
|
||||||
|
*
|
||||||
|
* @author Gabriele Columbro, Maurizio Pillitu
|
||||||
|
* @version $Id:$
|
||||||
|
* @goal amp
|
||||||
|
* @phase package
|
||||||
|
* @requiresProject
|
||||||
|
* @threadSafe
|
||||||
|
* @requiresDependencyResolution runtime
|
||||||
|
*/
|
||||||
|
public class AmpMojo extends AbstractMojo {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Name of the generated AMP and JAR artifacts
|
||||||
|
*
|
||||||
|
* @parameter expression="${ampFinalName}" default-value="${project.build.finalName}"
|
||||||
|
* @required
|
||||||
|
* @readonly
|
||||||
|
*/
|
||||||
|
protected String ampFinalName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Root folder that is packaged into the AMP
|
||||||
|
*
|
||||||
|
* @parameter default-value="${project.build.directory}/${project.build.finalName}"
|
||||||
|
* @required
|
||||||
|
* @
|
||||||
|
*/
|
||||||
|
protected File ampBuildDirectory;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Classifier to add to the artifact generated. If given, the artifact will be attached.
|
||||||
|
* If this is not given,it will merely be written to the output directory
|
||||||
|
* according to the finalName.
|
||||||
|
*
|
||||||
|
* @parameter
|
||||||
|
*/
|
||||||
|
protected String classifier;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Whether (runtime scoped) JAR dependencies (including transitive) should be added or not to the generated AMP /lib folder.
|
||||||
|
* By default it's true so all direct and transitive dependencies will be added
|
||||||
|
*
|
||||||
|
* @parameter default-value="true"
|
||||||
|
* @required
|
||||||
|
*/
|
||||||
|
protected boolean includeDependencies;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ${project.basedir}/target directory
|
||||||
|
*
|
||||||
|
* @parameter default-value="${project.build.directory}"
|
||||||
|
* @required
|
||||||
|
* @readonly
|
||||||
|
*/
|
||||||
|
protected File outputDirectory;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* (Read Only) Directory containing the classes and resource files that should be packaged into the JAR.
|
||||||
|
*
|
||||||
|
* @parameter default-value="${project.build.outputDirectory}"
|
||||||
|
* @required
|
||||||
|
* @readonly
|
||||||
|
*/
|
||||||
|
protected File classesDirectory;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* (Read Only) The Maven project.
|
||||||
|
*
|
||||||
|
* @parameter default-value="${project}"
|
||||||
|
* @required
|
||||||
|
* @readonly
|
||||||
|
*/
|
||||||
|
protected MavenProject project;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* (Read Only) The Maven session
|
||||||
|
*
|
||||||
|
* @parameter default-value="${session}"
|
||||||
|
* @readonly
|
||||||
|
* @required
|
||||||
|
*/
|
||||||
|
protected MavenSession session;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The archive configuration to use.
|
||||||
|
* See <a href="http://maven.apache.org/shared/maven-archiver/index.html">Maven Archiver Reference</a>.
|
||||||
|
*
|
||||||
|
* @parameter
|
||||||
|
*/
|
||||||
|
protected MavenArchiveConfiguration archive = new MavenArchiveConfiguration();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @component
|
||||||
|
*/
|
||||||
|
protected MavenProjectHelper projectHelper;
|
||||||
|
|
||||||
|
public void execute()
|
||||||
|
throws MojoExecutionException {
|
||||||
|
|
||||||
|
if(includeDependencies) {
|
||||||
|
gatherDependencies();
|
||||||
|
}
|
||||||
|
|
||||||
|
File ampFile = createArchive();
|
||||||
|
if (this.classifier != null) {
|
||||||
|
this.projectHelper.attachArtifact(this.project, "amp", this.classifier, ampFile);
|
||||||
|
} else {
|
||||||
|
this.project.getArtifact().setFile(ampFile);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates and returns the AMP archive, invoking the AmpArchiver
|
||||||
|
*
|
||||||
|
* @return a File pointing to an existing AMP package, contained
|
||||||
|
* in ${project.build.outputDirectory}
|
||||||
|
*/
|
||||||
|
protected File createArchive()
|
||||||
|
throws MojoExecutionException {
|
||||||
|
File jarFile = getFile(
|
||||||
|
new File(this.ampBuildDirectory, AmpModel.AMP_FOLDER_LIB),
|
||||||
|
this.ampFinalName,
|
||||||
|
this.classifier,
|
||||||
|
"jar");
|
||||||
|
|
||||||
|
File ampFile = getFile(
|
||||||
|
this.outputDirectory,
|
||||||
|
this.ampFinalName,
|
||||||
|
this.classifier,
|
||||||
|
"amp"
|
||||||
|
);
|
||||||
|
|
||||||
|
MavenArchiver jarArchiver = new MavenArchiver();
|
||||||
|
jarArchiver.setArchiver(new JarArchiver());
|
||||||
|
jarArchiver.setOutputFile(jarFile);
|
||||||
|
|
||||||
|
MavenArchiver ampArchiver = new MavenArchiver();
|
||||||
|
ampArchiver.setArchiver(new AmpArchiver());
|
||||||
|
ampArchiver.setOutputFile(ampFile);
|
||||||
|
|
||||||
|
if (!this.ampBuildDirectory.exists()) {
|
||||||
|
getLog().warn("ampBuildDirectory does not exist - AMP will be empty");
|
||||||
|
} else {
|
||||||
|
try {
|
||||||
|
jarArchiver.getArchiver().addDirectory(this.classesDirectory, new String[]{}, new String[]{});
|
||||||
|
jarArchiver.createArchive(this.session, this.project, this.archive);
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new MojoExecutionException("Error creating JAR", e);
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
ampArchiver.getArchiver().addDirectory(this.ampBuildDirectory, new String[]{"**"}, new String[]{});
|
||||||
|
ampArchiver.createArchive(this.session, this.project, this.archive);
|
||||||
|
}
|
||||||
|
catch (Exception e) {
|
||||||
|
throw new MojoExecutionException("Error creating AMP", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ampFile;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Builds a File object pointing to the target AMP package; the pointer to the File is created taking into
|
||||||
|
* account the (optional) artifact classifier defined
|
||||||
|
*
|
||||||
|
* @param basedir the Base Directory of the currently built project
|
||||||
|
* @param finalName the Final Name of the artifact being built
|
||||||
|
* @param classifier the optional classifier of the artifact being built
|
||||||
|
* @return a File object pointing to the target AMP package
|
||||||
|
*/
|
||||||
|
protected static File getFile(File basedir, String finalName, String classifier, String extension) {
|
||||||
|
if (classifier == null) {
|
||||||
|
classifier = "";
|
||||||
|
} else if (classifier.trim().length() > 0 && !classifier.startsWith("-")) {
|
||||||
|
classifier = "-" + classifier;
|
||||||
|
}
|
||||||
|
return new File(basedir, finalName + classifier + "." + extension);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Copies all runtime dependencies to AMP lib. By default transitive runtime dependencies are retrieved.
|
||||||
|
* This behavior can be configured via the transitive parameter
|
||||||
|
* @throws MojoExecutionException
|
||||||
|
*/
|
||||||
|
protected void gatherDependencies() throws MojoExecutionException
|
||||||
|
{
|
||||||
|
Set<Artifact> dependencies = null;
|
||||||
|
// Whether transitive deps should be gathered or not
|
||||||
|
dependencies = project.getArtifacts();
|
||||||
|
|
||||||
|
ScopeArtifactFilter filter = new ScopeArtifactFilter( Artifact.SCOPE_RUNTIME );
|
||||||
|
|
||||||
|
for (Artifact artifact : dependencies) {
|
||||||
|
if ( !artifact.isOptional() && filter.include( artifact ) )
|
||||||
|
{
|
||||||
|
String type = artifact.getType();
|
||||||
|
|
||||||
|
if (AmpModel.EXTENSION_LIST.contains(type))
|
||||||
|
{
|
||||||
|
File targetFile = new File(ampBuildDirectory + File.separator + AmpModel.AMP_FOLDER_LIB + File.separator + artifact.getFile().getName());
|
||||||
|
String targetFilePath = targetFile.getPath();
|
||||||
|
try {
|
||||||
|
FileUtils.copyFile(artifact.getFile(), targetFile);
|
||||||
|
} catch (IOException e) {
|
||||||
|
throw new MojoExecutionException("Error copying transitive dependency " + artifact.getId() + " to file: " + targetFilePath);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,150 @@
|
|||||||
|
package org.alfresco.maven.plugin;
|
||||||
|
|
||||||
|
import org.alfresco.repo.module.tool.ModuleManagementTool;
|
||||||
|
import org.apache.maven.artifact.Artifact;
|
||||||
|
import org.apache.maven.plugin.AbstractMojo;
|
||||||
|
import org.apache.maven.plugin.MojoExecutionException;
|
||||||
|
import org.apache.maven.plugin.MojoFailureException;
|
||||||
|
import org.apache.maven.project.MavenProject;
|
||||||
|
import org.codehaus.plexus.util.FileUtils;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Performs a AMP to WAR overlay invoking the Alfresco Repository POJO
|
||||||
|
* ModuleManagementTool.installModules() and therefore emulating the same
|
||||||
|
* WAR overlay performed by Alfresco Repository during bootstrap.
|
||||||
|
* <p/>
|
||||||
|
* The AMP files overlaid are all AMP runtime dependencies defined in the
|
||||||
|
* current project's build.
|
||||||
|
* <p/>
|
||||||
|
* Additionally (and optionally) you can define the full path of a single AMP file that needs to
|
||||||
|
* be overlaid, using the <simpleAmp> configuration element.
|
||||||
|
*
|
||||||
|
* @version $Id:$
|
||||||
|
* @requiresDependencyResolution
|
||||||
|
* @goal install
|
||||||
|
*/
|
||||||
|
public class InstallMojo extends AbstractMojo {
|
||||||
|
|
||||||
|
private static final String AMP_OVERLAY_FOLDER_NAME = "ampoverlays_temp";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Name of the generated AMP and JAR artifacts
|
||||||
|
*
|
||||||
|
* @parameter expression="${ampFinalName}" default-value="${project.build.finalName}"
|
||||||
|
* @required
|
||||||
|
* @readonly
|
||||||
|
*/
|
||||||
|
protected String ampFinalName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The WAR file or exploded dir to install the AMPs in. If specified
|
||||||
|
* Defaults to <code>outputDirectory/${ampFinalName}-war</code>
|
||||||
|
*
|
||||||
|
* @parameter expression="${warLocation}" default-value="${project.build.directory}/${project.build.finalName}-war"
|
||||||
|
*/
|
||||||
|
private File warLocation;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* One single amp file that, if exists, gets included into the list
|
||||||
|
* of modules to install within the Alfresco WAR, along with other AMP
|
||||||
|
* defined as (runtime) Maven dependencies
|
||||||
|
*
|
||||||
|
* @parameter expression="${singleAmp}" default-value="${project.build.directory}/${project.build.finalName}.amp"
|
||||||
|
*/
|
||||||
|
private File singleAmp;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* [Read Only] The target/ directory.
|
||||||
|
*
|
||||||
|
* @parameter expression="${project.build.directory}"
|
||||||
|
* @readonly
|
||||||
|
* @required
|
||||||
|
*/
|
||||||
|
private String outputDirectory;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The maven project.
|
||||||
|
*
|
||||||
|
* @parameter expression="${project}"
|
||||||
|
* @required
|
||||||
|
* @readonly
|
||||||
|
*/
|
||||||
|
private MavenProject project;
|
||||||
|
|
||||||
|
public InstallMojo() {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute() throws MojoExecutionException, MojoFailureException {
|
||||||
|
File overlayTempDir = new File(this.outputDirectory, AMP_OVERLAY_FOLDER_NAME);
|
||||||
|
getLog().debug("Setting AMP Destination dir to " + overlayTempDir.getAbsolutePath());
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Collect all AMP runtime dependencies and copy all files
|
||||||
|
* in one single build folder, *ampDirectoryDir*
|
||||||
|
*/
|
||||||
|
try {
|
||||||
|
for (Object artifactObj : project.getRuntimeArtifacts()) {
|
||||||
|
if (artifactObj instanceof Artifact) {
|
||||||
|
Artifact artifact = (Artifact) artifactObj;
|
||||||
|
if ("amp".equals(artifact.getType())) {
|
||||||
|
File artifactFile = artifact.getFile();
|
||||||
|
FileUtils.copyFileToDirectory(artifactFile, overlayTempDir);
|
||||||
|
getLog().debug(String.format("Copied %s into %s", artifactFile, overlayTempDir));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (this.singleAmp != null && this.singleAmp.exists()) {
|
||||||
|
if (!overlayTempDir.exists()) {
|
||||||
|
overlayTempDir.mkdirs();
|
||||||
|
}
|
||||||
|
|
||||||
|
FileUtils.copyFileToDirectory(this.singleAmp, overlayTempDir);
|
||||||
|
getLog().debug(String.format("Copied %s into %s", this.singleAmp, overlayTempDir));
|
||||||
|
}
|
||||||
|
} catch (IOException e) {
|
||||||
|
getLog().error(
|
||||||
|
String.format(
|
||||||
|
"Cannot copy AMP module to folder %s",
|
||||||
|
overlayTempDir));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Locate the WAR file to overlay - the one produced by the current project
|
||||||
|
// if (warLocation == null) {
|
||||||
|
// String warLocation = this.outputDirectory + File.separator + this.ampFinalName + "-war" + File.separator;
|
||||||
|
// this.warLocation = new File(warLocation);
|
||||||
|
// }
|
||||||
|
if (!warLocation.exists()) {
|
||||||
|
getLog().info(
|
||||||
|
"No WAR file found in " + warLocation.getAbsolutePath() + " - skipping overlay.");
|
||||||
|
} else if (overlayTempDir == null ||
|
||||||
|
!overlayTempDir.exists()) {
|
||||||
|
getLog().info(
|
||||||
|
"No ampoverlay folder found in " + overlayTempDir + " - skipping overlay.");
|
||||||
|
} else if (overlayTempDir.listFiles().length == 0) {
|
||||||
|
getLog().info(
|
||||||
|
"No runtime AMP dependencies found for this build - skipping overlay.");
|
||||||
|
} else {
|
||||||
|
/**
|
||||||
|
* Invoke the ModuleManagementTool to install AMP modules on the WAR file;
|
||||||
|
* so far, no backup or force flags are enabled
|
||||||
|
*/
|
||||||
|
ModuleManagementTool mmt = new ModuleManagementTool();
|
||||||
|
mmt.setVerbose(true);
|
||||||
|
try {
|
||||||
|
mmt.installModules(
|
||||||
|
overlayTempDir.getAbsolutePath(),
|
||||||
|
warLocation.getAbsolutePath(),
|
||||||
|
false, //preview
|
||||||
|
true, //force install
|
||||||
|
false); //backup
|
||||||
|
} catch (IOException e) {
|
||||||
|
throw new MojoExecutionException("Problems while installing " +
|
||||||
|
overlayTempDir.getAbsolutePath() + " onto " + warLocation.getAbsolutePath(), e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,113 @@
|
|||||||
|
package org.alfresco.maven.plugin;
|
||||||
|
|
||||||
|
import java.text.DateFormat;
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
import org.apache.maven.plugin.AbstractMojo;
|
||||||
|
import org.apache.maven.plugin.MojoExecutionException;
|
||||||
|
import org.apache.maven.plugin.MojoFailureException;
|
||||||
|
import org.apache.maven.project.MavenProject;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Removes -SNAPSHOT suffix from the version number (if present), optionally replacing it with a timestamp.
|
||||||
|
* The result is provided in the Maven property ${noSnapshotVersion} (name can be changed using
|
||||||
|
* <propertyName>myCustomVersion</>).
|
||||||
|
* This feature is mostly needed to avoid Alfresco failing when installing AMP modules with non-numeric
|
||||||
|
* versions.
|
||||||
|
*
|
||||||
|
* @version $Id:$
|
||||||
|
* @goal set-version
|
||||||
|
* @phase initialize
|
||||||
|
* @requiresProject
|
||||||
|
* @threadSafe
|
||||||
|
*/
|
||||||
|
public class VersionMojo extends AbstractMojo {
|
||||||
|
|
||||||
|
private static final DateFormat TIMESTAMP_FORMATTER = new SimpleDateFormat("yyMMddHHmm");
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The snapshotSuffix used to identify and strip the -SNAPSHOT version suffix
|
||||||
|
* See issue https://issues.alfresco.com/jira/browse/ENH-1232
|
||||||
|
*
|
||||||
|
* @parameter expression="${snapshotSuffix}" default-value="-SNAPSHOT"
|
||||||
|
* @required
|
||||||
|
*/
|
||||||
|
protected String snapshotSuffix;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Enable this option in order to replace -SNAPSHOT with the currentTimestamp
|
||||||
|
* of the artifact creation
|
||||||
|
* See issue https://issues.alfresco.com/jira/browse/ENH-1232
|
||||||
|
*
|
||||||
|
* @parameter expression="${snapshotToTimestamp}" default-value="false"
|
||||||
|
* @required
|
||||||
|
*/
|
||||||
|
protected boolean snapshotToTimestamp;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allows to append a custom (numeric) value to the current artifact's version,
|
||||||
|
* i.e. appending the SCM build number can be accomplished defining
|
||||||
|
* <customVersionSuffix>${buildnumber}</customVersionSuffix> in the plugin
|
||||||
|
* configuration.
|
||||||
|
*
|
||||||
|
* @parameter expression="${customVersionSuffix}"
|
||||||
|
*/
|
||||||
|
protected String customVersionSuffix;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Maven project property the stripped version is pushed into
|
||||||
|
*
|
||||||
|
* @parameter expression="${propertyName}" default-value="noSnapshotVersion"
|
||||||
|
* @required
|
||||||
|
*/
|
||||||
|
private String propertyName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* [Read Only] The Maven project.
|
||||||
|
*
|
||||||
|
* @parameter default-value="${project}"
|
||||||
|
* @required
|
||||||
|
* @readonly
|
||||||
|
*/
|
||||||
|
protected MavenProject project;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* [Read Only] Current version of the project
|
||||||
|
*
|
||||||
|
* @parameter expression="${project.version}"
|
||||||
|
* @required
|
||||||
|
* @readonly
|
||||||
|
*/
|
||||||
|
protected String version;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Normalizes the project's version following 2 patterns
|
||||||
|
* - Remove the -SNAPSHOT suffix, if present
|
||||||
|
* - (Optionally) append the timestamp to the version, if -SNAPSHOT is present
|
||||||
|
* - (Optionally) append the build number to the version
|
||||||
|
*
|
||||||
|
* @return the current project's version normalized
|
||||||
|
*/
|
||||||
|
protected String getNormalizedVersion() {
|
||||||
|
int separatorIndex = version.indexOf(snapshotSuffix);
|
||||||
|
String normalizedVersion = version;
|
||||||
|
if (separatorIndex > -1) {
|
||||||
|
normalizedVersion = version.substring(0, separatorIndex);
|
||||||
|
getLog().info("Removed -SNAPSHOT suffix from version - " + normalizedVersion);
|
||||||
|
}
|
||||||
|
if (this.customVersionSuffix != null && this.customVersionSuffix.length() > 0) {
|
||||||
|
normalizedVersion += "." + this.customVersionSuffix;
|
||||||
|
getLog().info("Added custom suffix to version - " + normalizedVersion);
|
||||||
|
} else if (this.snapshotToTimestamp) {
|
||||||
|
normalizedVersion += "." + TIMESTAMP_FORMATTER.format(new Date());
|
||||||
|
getLog().info("Added timestamp to version - " + normalizedVersion);
|
||||||
|
}
|
||||||
|
return normalizedVersion;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute() throws MojoExecutionException, MojoFailureException {
|
||||||
|
project.getProperties().put(propertyName, getNormalizedVersion());
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,47 @@
|
|||||||
|
package org.alfresco.maven.plugin.archiver;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import org.codehaus.plexus.archiver.jar.JarArchiver;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Emulates the JarArchiver only changing the extension name from .jar to .amp
|
||||||
|
* It also adds a logging statement that can help debugging the build
|
||||||
|
*
|
||||||
|
* @author Gabriele Columbro, Maurizio Pillitu
|
||||||
|
*/
|
||||||
|
public class AmpArchiver extends JarArchiver {
|
||||||
|
|
||||||
|
public AmpArchiver() {
|
||||||
|
super.archiveType = "amp";
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see org.codehaus.plexus.archiver.AbstractArchiver#addDirectory(java.io.File, String, String[], String[])
|
||||||
|
*/
|
||||||
|
public void addDirectory(final File directory, final String prefix, final String[] includes,
|
||||||
|
final String[] excludes) {
|
||||||
|
getLogger().info("Adding directory to AMP package [ '" + directory + "' '" + prefix + "']");
|
||||||
|
super.addDirectory(directory, prefix, includes, excludes);
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,65 @@
|
|||||||
|
package org.alfresco.maven.plugin.archiver;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
|
||||||
|
import org.alfresco.repo.module.tool.ModuleManagementTool;
|
||||||
|
import org.apache.maven.execution.MavenSession;
|
||||||
|
import org.apache.maven.plugin.LegacySupport;
|
||||||
|
import org.apache.maven.plugin.MojoExecutionException;
|
||||||
|
import org.apache.maven.project.MavenProject;
|
||||||
|
import org.codehaus.plexus.archiver.ArchiverException;
|
||||||
|
import org.codehaus.plexus.archiver.zip.AbstractZipUnArchiver;
|
||||||
|
import org.codehaus.plexus.component.annotations.Requirement;
|
||||||
|
|
||||||
|
public class AmpUnArchiver extends AbstractZipUnArchiver {
|
||||||
|
|
||||||
|
public AmpUnArchiver()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
@Requirement
|
||||||
|
private LegacySupport legacySupport;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public File getDestDirectory() {
|
||||||
|
MavenSession session = legacySupport.getSession();
|
||||||
|
MavenProject project = session.getCurrentProject();
|
||||||
|
return new File(project.getBuild().getDirectory() + File.separator + project.getBuild().getFinalName());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void execute() throws ArchiverException {
|
||||||
|
try {
|
||||||
|
/**
|
||||||
|
* Invoke the ModuleManagementTool to install AMP modules on the WAR file;
|
||||||
|
* so far, no backup or force flags are enabled
|
||||||
|
*/
|
||||||
|
ModuleManagementTool mmt = new ModuleManagementTool();
|
||||||
|
mmt.setVerbose(true);
|
||||||
|
getLogger().info("getDestFile ():" + getDestFile());
|
||||||
|
getLogger().info("getDestFile ():" + getDestFile());
|
||||||
|
getLogger().info("getDestDirectory ():" + getDestDirectory());
|
||||||
|
|
||||||
|
File destLocation = (getDestFile() == null || !getDestFile().exists() ) ? getDestDirectory() : getDestFile();
|
||||||
|
|
||||||
|
getLogger().info("Installing " + getSourceFile() + " into " + destLocation);
|
||||||
|
try {
|
||||||
|
mmt.installModule(
|
||||||
|
getSourceFile().getAbsolutePath(),
|
||||||
|
destLocation.getAbsolutePath(),
|
||||||
|
false, //preview
|
||||||
|
true, //force install
|
||||||
|
false); //backup
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new MojoExecutionException("Problems while installing " +
|
||||||
|
getSourceFile().getAbsolutePath() + " onto " + destLocation.getAbsolutePath(), e);
|
||||||
|
}
|
||||||
|
getLogger().debug("MMT invocation for " + getSourceFile().getAbsolutePath() + "complete");
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new ArchiverException("Error while expanding "
|
||||||
|
+ getSourceFile().getAbsolutePath(), e);
|
||||||
|
} finally {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@@ -0,0 +1,27 @@
|
|||||||
|
<lifecycles>
|
||||||
|
<lifecycle>
|
||||||
|
<id>amp</id>
|
||||||
|
<phases>
|
||||||
|
<phase>
|
||||||
|
<id>initialize</id>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<goals>
|
||||||
|
<goal>set-version</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</phase>
|
||||||
|
<phase>
|
||||||
|
<id>package</id>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<goals>
|
||||||
|
<goal>amp</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</phase>
|
||||||
|
</phases>
|
||||||
|
</lifecycle>
|
||||||
|
</lifecycles>
|
@@ -0,0 +1,61 @@
|
|||||||
|
<component-set>
|
||||||
|
<components>
|
||||||
|
<component>
|
||||||
|
<role>org.apache.maven.artifact.handler.ArtifactHandler</role>
|
||||||
|
<role-hint>amp</role-hint>
|
||||||
|
<implementation>org.apache.maven.artifact.handler.DefaultArtifactHandler</implementation>
|
||||||
|
<configuration>
|
||||||
|
<extension>amp</extension>
|
||||||
|
<type>amp</type>
|
||||||
|
<packaging>amp</packaging>
|
||||||
|
<language>java</language>
|
||||||
|
<addedToClasspath>true</addedToClasspath>
|
||||||
|
<includesDependencies>true</includesDependencies>
|
||||||
|
</configuration>
|
||||||
|
</component>
|
||||||
|
|
||||||
|
<component>
|
||||||
|
<role>org.apache.maven.lifecycle.mapping.LifecycleMapping</role>
|
||||||
|
<role-hint>amp</role-hint>
|
||||||
|
<implementation>org.apache.maven.lifecycle.mapping.DefaultLifecycleMapping</implementation>
|
||||||
|
<configuration>
|
||||||
|
<phases>
|
||||||
|
<initialize>org.alfresco.maven.plugin:alfresco-maven-plugin:set-version</initialize>
|
||||||
|
<process-resources>org.apache.maven.plugins:maven-resources-plugin:resources</process-resources>
|
||||||
|
<compile>org.apache.maven.plugins:maven-compiler-plugin:compile</compile>
|
||||||
|
<process-test-resources>org.apache.maven.plugins:maven-resources-plugin:testResources</process-test-resources>
|
||||||
|
<test-compile>org.apache.maven.plugins:maven-compiler-plugin:testCompile</test-compile>
|
||||||
|
<test>org.apache.maven.plugins:maven-surefire-plugin:test</test>
|
||||||
|
<package>org.alfresco.maven.plugin:alfresco-maven-plugin:amp</package>
|
||||||
|
<install>org.apache.maven.plugins:maven-install-plugin:install</install>
|
||||||
|
<deploy>org.apache.maven.plugins:maven-deploy-plugin:deploy</deploy>
|
||||||
|
</phases>
|
||||||
|
</configuration>
|
||||||
|
</component>
|
||||||
|
|
||||||
|
<component>
|
||||||
|
<role>org.codehaus.plexus.archiver.Archiver</role>
|
||||||
|
<role-hint>amp</role-hint>
|
||||||
|
<implementation>org.alfresco.maven.plugin.archiver.AmpArchiver</implementation>
|
||||||
|
<instantiation-strategy>per-lookup</instantiation-strategy>
|
||||||
|
</component>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- An AMP requires an MMT like behaviour when unpacked in a war.
|
||||||
|
In the maven-war-plugin the default assumption is made on the choice of the unarchiver
|
||||||
|
role-hint = file-extension
|
||||||
|
so we use role-hint=amp here to seamlessly integrate with it
|
||||||
|
-->
|
||||||
|
<component>
|
||||||
|
<role>org.codehaus.plexus.archiver.UnArchiver</role>
|
||||||
|
<role-hint>amp</role-hint>
|
||||||
|
<implementation>org.alfresco.maven.plugin.archiver.AmpUnArchiver</implementation>
|
||||||
|
<requirements>
|
||||||
|
<requirement>
|
||||||
|
<role>org.apache.maven.plugin.LegacySupport</role>
|
||||||
|
</requirement>
|
||||||
|
</requirements>
|
||||||
|
</component>
|
||||||
|
|
||||||
|
</components>
|
||||||
|
</component-set>
|
@@ -0,0 +1,36 @@
|
|||||||
|
-----
|
||||||
|
Maven AMP Plugin Plexus Components
|
||||||
|
-----
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
AMP Lifecycle Mapping
|
||||||
|
|
||||||
|
This plugin provides support for <packaging>amp</packaging> type of projects. \
|
||||||
|
Lifecycle of an Alfresco modules is mapped in the file:
|
||||||
|
|
||||||
|
{{ ${site_tags_url}/${site_pom_artifactId}-${site_pom_version}/src/main/resources/META-INF/plexus/components.xml }}
|
||||||
|
|
||||||
|
This build produces an Alfresco compatible AMP as main build product. It supports (being derived from maven-war-plugin)
|
||||||
|
overlay of modules and transitive AMP dependency packing.
|
||||||
|
|
||||||
|
An AMP depending on one ore more AMP will package those AMP in the final product of the build:
|
||||||
|
overlays can be configured same as in {{ http://maven.apache.org/plugins/maven-war-plugin/overlays.html }}.
|
||||||
|
A plain zip UnArchiver is used for this overlay.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
AMP -> WAR Unarchiver
|
||||||
|
|
||||||
|
The default UnArchiver (role-hint="amp") used by the default maven infrastructure for .amp files is a custom UnArchiver
|
||||||
|
which behaves as the MMT, unarchiving AMPs in the proper places as dictated by {{{http://wiki.alfresco.com/wiki/AMP_Files} Alfresco AMP convention}} .
|
||||||
|
This little component allows any plugin to manage .amp dependencies in case the maven-amp-plugin is declared with <extensions>true</extensions> in
|
||||||
|
the current POM, basically supporting AMPs in Maven with no need for custom external tools like MMT.
|
||||||
|
|
||||||
|
See {{ ${site_tags_url}/${site_pom_artifactId}-${site_pom_version}/src/main/resources/META-INF/plexus/components.xml }}
|
||||||
|
|
||||||
|
|
||||||
|
AMP Artifact Handler
|
||||||
|
|
||||||
|
Instructs maven which type of Archive is the AMP, providing info about its inclusion in the classpath or the fact that already contains
|
||||||
|
its dependencies.
|
@@ -0,0 +1,59 @@
|
|||||||
|
<project>
|
||||||
|
<skin>
|
||||||
|
<groupId>org.apache.maven.skins</groupId>
|
||||||
|
<artifactId>maven-fluido-skin</artifactId>
|
||||||
|
<version>1.2.1</version>
|
||||||
|
</skin>
|
||||||
|
<custom>
|
||||||
|
<fluidoSkin>
|
||||||
|
<topBarEnabled>true</topBarEnabled>
|
||||||
|
<sideBarEnabled>true</sideBarEnabled>
|
||||||
|
<topBarIcon>
|
||||||
|
<name>Maven Alfresco Lifecycle</name>
|
||||||
|
<alt>Maven Alfresco Lifecycle</alt>
|
||||||
|
<src>/img/Alfresco-logo-transparent.gif</src>
|
||||||
|
<href>/index.html</href>
|
||||||
|
</topBarIcon>
|
||||||
|
<twitter>
|
||||||
|
<user>mindthegabz</user>
|
||||||
|
<showUser>true</showUser>
|
||||||
|
<showFollowers>true</showFollowers>
|
||||||
|
</twitter>
|
||||||
|
<facebookLike />
|
||||||
|
<googlePlusOne />
|
||||||
|
</fluidoSkin>
|
||||||
|
</custom>
|
||||||
|
<poweredBy>
|
||||||
|
<logo name="Maven" href="http://maven.apache.org" img="http://maven.apache.org/images/logos/maven-feather.png"/>
|
||||||
|
<logo name="Alfresco - Open source ECM" img="http://alfresco.com/assets/images/icons/powered_by_alfresco.gif" href="http://www.alfresco.com" />
|
||||||
|
</poweredBy>
|
||||||
|
<publishDate position="navigation-bottom" format="MM-dd-yy"/>
|
||||||
|
<bannerLeft>
|
||||||
|
<name>Alfresco Maven Plugin - v. ${project.version}</name>
|
||||||
|
<href>${site_site_url}</href>
|
||||||
|
</bannerLeft>
|
||||||
|
<body>
|
||||||
|
<links>
|
||||||
|
<item name="Maven" href="http://maven.apache.org/"/>
|
||||||
|
<item name="Apache" href="http://www.apache.org/"/>
|
||||||
|
</links>
|
||||||
|
|
||||||
|
<menu name="Plugin info">
|
||||||
|
<item name="Goals" href="plugin-info.html"/>
|
||||||
|
<item name="Usage" href="upage.html"/>
|
||||||
|
<item name="Advanced Usage" href="components.html"/>
|
||||||
|
</menu>
|
||||||
|
|
||||||
|
<menu name="Used by">
|
||||||
|
<!-- @TODO update href -->
|
||||||
|
<item name="Maven Alfresco AMP Archetype" href="https://artifacts.alfresco.com/nexus/content/repositories/alfresco-docs/maven-alfresco-lifecycle/maven-alfresco-archetypes/maven-alfresco-amp-archetype/index.html"/>
|
||||||
|
<item name="Maven Alfresco All In One Archetype" href="https://artifacts.alfresco.com/nexus/content/repositories/alfresco-docs/maven-alfresco-lifecycle/maven-alfresco-archetypes/maven-alfresco-amp-archetype/index.html"/>
|
||||||
|
</menu>
|
||||||
|
|
||||||
|
<!--<menu name="See also">-->
|
||||||
|
<!--</menu>-->
|
||||||
|
|
||||||
|
<!--<menu ref="reports"/>-->
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</project>
|
128
alfresco-lifecycle-aggregator/pom.xml
Normal file
128
alfresco-lifecycle-aggregator/pom.xml
Normal file
@@ -0,0 +1,128 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<groupId>org.alfresco.maven</groupId>
|
||||||
|
<artifactId>alfresco-lifecycle-aggregator</artifactId>
|
||||||
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
<name>Maven Alfresco SDK Lifecycle Aggregator</name>
|
||||||
|
<description>This aggregator Project builds all modules required for the Maven Alfresco SDK</description>
|
||||||
|
<packaging>pom</packaging>
|
||||||
|
|
||||||
|
<prerequisites>
|
||||||
|
<maven>3.0.3</maven>
|
||||||
|
</prerequisites>
|
||||||
|
|
||||||
|
<licenses>
|
||||||
|
<license>
|
||||||
|
<name>GNU Lesser General Public License v3.0 or later</name>
|
||||||
|
<url>http://www.gnu.org/licenses/lgpl-3.0-standalone.html</url>
|
||||||
|
</license>
|
||||||
|
</licenses>
|
||||||
|
|
||||||
|
<developers>
|
||||||
|
<developer>
|
||||||
|
<id>gabriele.columbro</id>
|
||||||
|
<name>Gabriele Columbro</name>
|
||||||
|
<email>gabriele.columbro@alfresco.com</email>
|
||||||
|
<url>http://mindthegab.com</url>
|
||||||
|
<organization>Alfresco Software</organization>
|
||||||
|
<organizationUrl>http://www.alfresco.com</organizationUrl>
|
||||||
|
<timezone>GMT+1</timezone>
|
||||||
|
<roles>
|
||||||
|
<role>Founder</role>
|
||||||
|
<role>Architect</role>
|
||||||
|
<role>Developer</role>
|
||||||
|
</roles>
|
||||||
|
</developer>
|
||||||
|
<developer>
|
||||||
|
<id>maurizio.pillitu</id>
|
||||||
|
<name>Maurizio Pillitu</name>
|
||||||
|
<email>maurizio.pillitu@alfresco.com</email>
|
||||||
|
<url>http://session.it</url>
|
||||||
|
<organization>Alfresco Software</organization>
|
||||||
|
<organizationUrl>http://www.alfresco.com</organizationUrl>
|
||||||
|
<timezone>GMT+1</timezone>
|
||||||
|
<roles>
|
||||||
|
<role>Architect</role>
|
||||||
|
<role>Developer</role>
|
||||||
|
</roles>
|
||||||
|
</developer>
|
||||||
|
</developers>
|
||||||
|
|
||||||
|
<contributors>
|
||||||
|
<contributor>
|
||||||
|
<name>Carlo Sciolla</name>
|
||||||
|
<email>carlo@backbase.com</email>
|
||||||
|
<organization>Backbase</organization>
|
||||||
|
<organizationUrl>http://www.backbase.com</organizationUrl>
|
||||||
|
<timezone>GMT+1</timezone>
|
||||||
|
<url>http://skuro.tk</url>
|
||||||
|
</contributor>
|
||||||
|
</contributors>
|
||||||
|
|
||||||
|
<!-- All the modules of the Mavne Alfresco SDK -->
|
||||||
|
<modules>
|
||||||
|
<!-- Plugins -->
|
||||||
|
<module>plugins/alfresco-maven-plugin</module>
|
||||||
|
<!-- POM files -->
|
||||||
|
<module>poms/alfresco-sdk-parent</module>
|
||||||
|
<!-- Archetypes -->
|
||||||
|
<module>archetypes/alfresco-amp-archetype</module>
|
||||||
|
<module>archetypes/alfresco-allinone-archetype</module>
|
||||||
|
</modules>
|
||||||
|
|
||||||
|
<distributionManagement>
|
||||||
|
<repository>
|
||||||
|
<id>alfresco-releases</id>
|
||||||
|
<url>https://artifacts.alfresco.com/nexus/content/repositories/releases
|
||||||
|
</url>
|
||||||
|
</repository>
|
||||||
|
<snapshotRepository>
|
||||||
|
<name>alfresco snapshots repository</name>
|
||||||
|
<id>alfresco-snapshots</id>
|
||||||
|
<url>https://artifacts.alfresco.com/nexus/content/repositories/snapshots
|
||||||
|
</url>
|
||||||
|
</snapshotRepository>
|
||||||
|
</distributionManagement>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<maven.archetype.version>2.2</maven.archetype.version>
|
||||||
|
</properties>
|
||||||
|
|
||||||
|
<build>
|
||||||
|
<pluginManagement>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-archetype-plugin</artifactId>
|
||||||
|
<version>${maven.archetype.version}</version>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</pluginManagement>
|
||||||
|
<extensions>
|
||||||
|
<extension>
|
||||||
|
<groupId>org.apache.maven.archetype</groupId>
|
||||||
|
<artifactId>archetype-packaging</artifactId>
|
||||||
|
<version>${maven.archetype.version}</version>
|
||||||
|
</extension>
|
||||||
|
</extensions>
|
||||||
|
</build>
|
||||||
|
|
||||||
|
<repositories>
|
||||||
|
<repository>
|
||||||
|
<id>alfresco-public</id>
|
||||||
|
<url>https://artifacts.alfresco.com/nexus/content/groups/public
|
||||||
|
</url>
|
||||||
|
</repository>
|
||||||
|
<repository>
|
||||||
|
<id>alfresco-public-snapshots</id>
|
||||||
|
<url>https://artifacts.alfresco.com/nexus/content/groups/public-snapshots
|
||||||
|
</url>
|
||||||
|
<snapshots>
|
||||||
|
<enabled>true</enabled>
|
||||||
|
</snapshots>
|
||||||
|
</repository>
|
||||||
|
</repositories>
|
||||||
|
|
||||||
|
</project>
|
640
alfresco-lifecycle-aggregator/poms/alfresco-sdk-parent/pom.xml
Normal file
640
alfresco-lifecycle-aggregator/poms/alfresco-sdk-parent/pom.xml
Normal file
@@ -0,0 +1,640 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<groupId>org.alfresco.maven</groupId>
|
||||||
|
<artifactId>alfresco-sdk-parent</artifactId>
|
||||||
|
<name>Alfresco Maven SDK Parent POM</name>
|
||||||
|
<description>
|
||||||
|
The Alfresco Maven SDK Parent POM exposes the developer features of the Maven Alfresco SDK.
|
||||||
|
Declare this POM as parent for your project and select the Alfresco version/edition by defining
|
||||||
|
the alfresco.groupId and alfresco.version in your POM.
|
||||||
|
</description>
|
||||||
|
<packaging>pom</packaging>
|
||||||
|
|
||||||
|
<!-- This defines the version of the SDK in terms of features -->
|
||||||
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
|
||||||
|
<licenses>
|
||||||
|
<license>
|
||||||
|
<name>GNU Lesser General Public License v3.0 or later</name>
|
||||||
|
<url>http://www.gnu.org/licenses/lgpl-3.0-standalone.html</url>
|
||||||
|
</license>
|
||||||
|
</licenses>
|
||||||
|
|
||||||
|
<prerequisites>
|
||||||
|
<maven>3.0.3</maven>
|
||||||
|
</prerequisites>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<!-- Default Alfresco version this SDK version has been tested with:
|
||||||
|
|
|
||||||
|
| alfresco.groupId can be
|
||||||
|
| org.alfresco ==> Alfresco community
|
||||||
|
| org.alfresco.enterprise ==> Alfresco Enterprise
|
||||||
|
|
|
||||||
|
| NOTE: You can / should override these properties in you POM to select the proper version
|
||||||
|
|
|
||||||
|
| For available versions please search on https://artifacts.alfresco.com/nexus/index.html
|
||||||
|
-->
|
||||||
|
<alfresco.groupId>org.alfresco</alfresco.groupId>
|
||||||
|
<alfresco.version>4.2.b</alfresco.version>
|
||||||
|
|
||||||
|
<!-- Values can be "alfresco" or "share". Default value is 'alfresco' assuming you are developing a repository AMP, change to share for share AMPs
|
||||||
|
| This impact (in AMP projects) the choice of the WAR project for embedded run
|
||||||
|
-->
|
||||||
|
<alfresco.client.war>alfresco</alfresco.client.war>
|
||||||
|
|
||||||
|
<!-- IMPORTANT! Override this only if you know what you're doing; it could break amp-to-war overlay -->
|
||||||
|
<alfresco.client.war.folder>${project.build.directory}/${project.build.finalName}-war</alfresco.client.war.folder>
|
||||||
|
|
||||||
|
<!-- Alfresco Repo disk storage folder (relative path) -->
|
||||||
|
<alfresco.data.location>alf_data_dev</alfresco.data.location>
|
||||||
|
<!-- Alfresco Repo configuration with embedded DB -->
|
||||||
|
<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>MODE=PostgreSQL;AUTO_SERVER=TRUE;DB_CLOSE_ON_EXIT=FALSE;LOCK_TIMEOUT=10000;MVCC=TRUE</alfresco.db.params>
|
||||||
|
<!-- By default the H2 embedded database datafile is created under the alfresco.data.location folder -->
|
||||||
|
<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>
|
||||||
|
|
||||||
|
<!-- SDK Properties -->
|
||||||
|
<!--
|
||||||
|
Built-in multi-environment property placeholding support (also for testing); to enable it on your sub-modules
|
||||||
|
* create app.properties.folder (default=src/main/properties/${env}) folder structure
|
||||||
|
* place properties files in that folder with the correct name
|
||||||
|
Both 'alfresco' and 'share' sub-modules currently use it.
|
||||||
|
-->
|
||||||
|
<env>local</env>
|
||||||
|
<!-- Be default we assume to we load all properties files under ${app.properties.folder}
|
||||||
|
| and
|
||||||
|
| This can be overridden your pom
|
||||||
|
-->
|
||||||
|
<app.amp.folder>src/main/amp</app.amp.folder>
|
||||||
|
<app.properties.folder>src/main/properties/${env}</app.properties.folder>
|
||||||
|
<app.properties.test.folder>src/test/properties/${env}</app.properties.test.folder>
|
||||||
|
<app.properties.include>**</app.properties.include>
|
||||||
|
<app.properties.test.include>**</app.properties.test.include>
|
||||||
|
|
||||||
|
<!-- Turns on/off POM properties filtering globally. By default filtering is on.
|
||||||
|
| This can be overridden in your POM, but do it at your own risk
|
||||||
|
| as it may break SDK functionalities
|
||||||
|
-->
|
||||||
|
<app.filtering.enabled>true</app.filtering.enabled>
|
||||||
|
<app.testing.jvm.args>-Xms256m -Xmx1524m -XX:MaxPermSize=256m -Duser.language=en</app.testing.jvm.args>
|
||||||
|
|
||||||
|
<!-- Logging in project's target folder by default
|
||||||
|
| NOTE: Remember the trailing slash when overriding this.
|
||||||
|
-->
|
||||||
|
<app.log.dir>${project.build.directory}/</app.log.dir>
|
||||||
|
<app.log.root.level>WARN</app.log.root.level>
|
||||||
|
|
||||||
|
<!-- Maven Plugins Versions used by the SDK -->
|
||||||
|
<maven.compiler.version>2.3.2</maven.compiler.version>
|
||||||
|
<maven.clean.version>2.4.1</maven.clean.version>
|
||||||
|
<maven.dependency.version>2.4</maven.dependency.version>
|
||||||
|
<maven.enforcer.plugin>1.1.1</maven.enforcer.plugin>
|
||||||
|
<maven.resources.version>2.5</maven.resources.version>
|
||||||
|
<maven.surefire.version>2.12.4</maven.surefire.version>
|
||||||
|
<maven.install.version>2.3.1</maven.install.version>
|
||||||
|
<maven.jar.version>2.4</maven.jar.version>
|
||||||
|
<maven.war.version>2.2</maven.war.version>
|
||||||
|
<maven.release.version>2.2.2</maven.release.version>
|
||||||
|
<maven.buildhelper.version>1.7</maven.buildhelper.version>
|
||||||
|
<maven.jetty.version>6.1.26</maven.jetty.version>
|
||||||
|
<!-- Alfresco Maven plugin in use throughout the SDK -->
|
||||||
|
<maven.alfresco.version>1.0-SNAPSHOT</maven.alfresco.version>
|
||||||
|
<h2.version>1.3.158</h2.version>
|
||||||
|
<h2-support.version>1.5</h2-support.version>
|
||||||
|
|
||||||
|
</properties>
|
||||||
|
|
||||||
|
<repositories>
|
||||||
|
<repository>
|
||||||
|
<id>alfresco-public</id>
|
||||||
|
<url>https://artifacts.alfresco.com/nexus/content/groups/public</url>
|
||||||
|
</repository>
|
||||||
|
<repository>
|
||||||
|
<id>alfresco-public-snapshots</id>
|
||||||
|
<url>https://artifacts.alfresco.com/nexus/content/groups/public-snapshots</url>
|
||||||
|
<snapshots>
|
||||||
|
<enabled>true</enabled>
|
||||||
|
<updatePolicy>daily</updatePolicy>
|
||||||
|
</snapshots>
|
||||||
|
</repository>
|
||||||
|
</repositories>
|
||||||
|
|
||||||
|
<distributionManagement>
|
||||||
|
<repository>
|
||||||
|
<id>alfresco-releases</id>
|
||||||
|
<url>https://artifacts.alfresco.com/nexus/content/repositories/releases</url>
|
||||||
|
</repository>
|
||||||
|
<snapshotRepository>
|
||||||
|
<name>alfresco snapshots repository</name>
|
||||||
|
<id>alfresco-snapshots</id>
|
||||||
|
<url>https://artifacts.alfresco.com/nexus/content/repositories/snapshots</url>
|
||||||
|
</snapshotRepository>
|
||||||
|
</distributionManagement>
|
||||||
|
|
||||||
|
<build>
|
||||||
|
<finalName>${project.artifactId}</finalName>
|
||||||
|
<pluginManagement>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.alfresco.maven.plugin</groupId>
|
||||||
|
<artifactId>alfresco-maven-plugin</artifactId>
|
||||||
|
<version>${maven.alfresco.version}</version>
|
||||||
|
<extensions>true</extensions>
|
||||||
|
<configuration>
|
||||||
|
<snapshotToTimestamp>true</snapshotToTimestamp>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-compiler-plugin</artifactId>
|
||||||
|
<version>${maven.compiler.version}</version>
|
||||||
|
<configuration>
|
||||||
|
<source>1.6</source>
|
||||||
|
<target>1.6</target>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-resources-plugin</artifactId>
|
||||||
|
<version>${maven.resources.version}</version>
|
||||||
|
<configuration>
|
||||||
|
<encoding>UTF-8</encoding>
|
||||||
|
<nonFilteredFileExtensions>
|
||||||
|
<nonFilteredFileExtension>ftl</nonFilteredFileExtension>
|
||||||
|
<nonFilteredFileExtension>acp</nonFilteredFileExtension>
|
||||||
|
<nonFilteredFileExtension>jpg</nonFilteredFileExtension>
|
||||||
|
<nonFilteredFileExtension>png</nonFilteredFileExtension>
|
||||||
|
<nonFilteredFileExtension>gif</nonFilteredFileExtension>
|
||||||
|
<nonFilteredFileExtension>pdf</nonFilteredFileExtension>
|
||||||
|
<nonFilteredFileExtension>doc</nonFilteredFileExtension>
|
||||||
|
<nonFilteredFileExtension>xls</nonFilteredFileExtension>
|
||||||
|
<nonFilteredFileExtension>ppt</nonFilteredFileExtension>
|
||||||
|
<nonFilteredFileExtension>bin</nonFilteredFileExtension>
|
||||||
|
</nonFilteredFileExtensions>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-war-plugin</artifactId>
|
||||||
|
<version>${maven.war.version}</version>
|
||||||
|
<configuration>
|
||||||
|
<archiveClasses>false</archiveClasses>
|
||||||
|
<warSourceExcludes>tools/**</warSourceExcludes>
|
||||||
|
<archive>
|
||||||
|
<manifest>
|
||||||
|
<addClasspath>true</addClasspath>
|
||||||
|
</manifest>
|
||||||
|
</archive>
|
||||||
|
</configuration>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.alfresco.maven.plugin</groupId>
|
||||||
|
<artifactId>alfresco-maven-plugin</artifactId>
|
||||||
|
<version>${maven.alfresco.version}</version>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-clean-plugin</artifactId>
|
||||||
|
<version>${maven.clean.version}</version>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-dependency-plugin</artifactId>
|
||||||
|
<version>${maven.dependency.version}</version>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-surefire-plugin</artifactId>
|
||||||
|
<version>${maven.surefire.version}</version>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-install-plugin</artifactId>
|
||||||
|
<version>${maven.install.version}</version>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-release-plugin</artifactId>
|
||||||
|
<version>${maven.release.version}</version>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-jar-plugin</artifactId>
|
||||||
|
<version>${maven.jar.version}</version>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.mortbay.jetty</groupId>
|
||||||
|
<artifactId>maven-jetty-plugin</artifactId>
|
||||||
|
<version>${maven.jetty.version}</version>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</pluginManagement>
|
||||||
|
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.alfresco.maven.plugin</groupId>
|
||||||
|
<artifactId>alfresco-maven-plugin</artifactId>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
|
||||||
|
<resources>
|
||||||
|
<resource>
|
||||||
|
<directory>src/main/resources</directory>
|
||||||
|
<filtering>${app.filtering.enabled}</filtering>
|
||||||
|
</resource>
|
||||||
|
<resource>
|
||||||
|
<directory>${app.amp.folder}</directory>
|
||||||
|
<targetPath>../${project.build.finalName}</targetPath>
|
||||||
|
<filtering>${app.filtering.enabled}</filtering>
|
||||||
|
</resource>
|
||||||
|
</resources>
|
||||||
|
<testResources>
|
||||||
|
<testResource>
|
||||||
|
<directory>src/test/resources</directory>
|
||||||
|
<filtering>${app.filtering.enabled}</filtering>
|
||||||
|
</testResource>
|
||||||
|
</testResources>
|
||||||
|
</build>
|
||||||
|
|
||||||
|
<!-- Feature / behavioral profiles -->
|
||||||
|
<profiles>
|
||||||
|
<!-- Enable environment properties filtering based on the env property -->
|
||||||
|
<profile>
|
||||||
|
<id>enable-properties-filtering</id>
|
||||||
|
<activation>
|
||||||
|
<file>
|
||||||
|
<!-- No properties allowed here. Only hardcoded values are properly interpreted -->
|
||||||
|
<exists>src/main/properties</exists>
|
||||||
|
</file>
|
||||||
|
</activation>
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.codehaus.mojo</groupId>
|
||||||
|
<artifactId>build-helper-maven-plugin</artifactId>
|
||||||
|
<version>${maven.buildhelper.version}</version>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>add-env-properties</id>
|
||||||
|
<phase>generate-resources</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>add-resource</goal>
|
||||||
|
</goals>
|
||||||
|
<configuration>
|
||||||
|
<resources>
|
||||||
|
<resource>
|
||||||
|
<directory>${app.properties.folder}</directory>
|
||||||
|
<includes>
|
||||||
|
<include>${app.properties.include}</include>
|
||||||
|
</includes>
|
||||||
|
<filtering>${app.filtering.enabled}</filtering>
|
||||||
|
</resource>
|
||||||
|
</resources>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
</profile>
|
||||||
|
|
||||||
|
<!-- Enable environment test properties filtering based on the env property -->
|
||||||
|
<profile>
|
||||||
|
<id>enable-test-properties-filtering</id>
|
||||||
|
<activation>
|
||||||
|
<file>
|
||||||
|
<!-- No properties allowed here. Only hardcoded values are properly interpreted -->
|
||||||
|
<exists>src/test/properties</exists>
|
||||||
|
</file>
|
||||||
|
</activation>
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.codehaus.mojo</groupId>
|
||||||
|
<artifactId>build-helper-maven-plugin</artifactId>
|
||||||
|
<version>${maven.buildhelper.version}</version>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>add-env-test-properties</id>
|
||||||
|
<phase>generate-resources</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>add-test-resource</goal>
|
||||||
|
</goals>
|
||||||
|
<configuration>
|
||||||
|
<resources>
|
||||||
|
<resource>
|
||||||
|
<directory>${app.properties.test.folder}</directory>
|
||||||
|
<includes>
|
||||||
|
<include>${app.properties.test.include}</include>
|
||||||
|
</includes>
|
||||||
|
<filtering>${app.filtering.enabled}</filtering>
|
||||||
|
</resource>
|
||||||
|
</resources>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
</profile>
|
||||||
|
<!-- Enable jetty running embedded if the jetty/jetty.xml file exists in the project -->
|
||||||
|
<profile>
|
||||||
|
<id>enable-jetty</id>
|
||||||
|
<activation>
|
||||||
|
<file>
|
||||||
|
<exists>jetty/jetty.xml</exists>
|
||||||
|
</file>
|
||||||
|
</activation>
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-resources-plugin</artifactId>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>filter-jetty-conf</id>
|
||||||
|
<goals>
|
||||||
|
<goal>copy-resources</goal>
|
||||||
|
</goals>
|
||||||
|
<phase>process-resources</phase>
|
||||||
|
<configuration>
|
||||||
|
<outputDirectory>target</outputDirectory>
|
||||||
|
<resources>
|
||||||
|
<resource>
|
||||||
|
<directory>${project.basedir}/jetty</directory>
|
||||||
|
<filtering>${app.filtering.enabled}</filtering>
|
||||||
|
</resource>
|
||||||
|
</resources>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.mortbay.jetty</groupId>
|
||||||
|
<artifactId>maven-jetty-plugin</artifactId>
|
||||||
|
<configuration>
|
||||||
|
<jettyConfig>${project.build.directory}/jetty.xml</jettyConfig>
|
||||||
|
</configuration>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.h2database</groupId>
|
||||||
|
<artifactId>h2</artifactId>
|
||||||
|
<version>${h2.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>tk.skuro.alfresco</groupId>
|
||||||
|
<artifactId>h2-support</artifactId>
|
||||||
|
<version>${h2-support.version}</version>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
</profile>
|
||||||
|
|
||||||
|
<!-- Enable AMP lifecycle if finds a module.properties, including unit testing support -->
|
||||||
|
<profile>
|
||||||
|
<id>enable-amp</id>
|
||||||
|
<activation>
|
||||||
|
<file>
|
||||||
|
<exists>src/main/amp/module.properties</exists>
|
||||||
|
</file>
|
||||||
|
</activation>
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.alfresco.maven.plugin</groupId>
|
||||||
|
<artifactId>alfresco-maven-plugin</artifactId>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-surefire-plugin</artifactId>
|
||||||
|
<version>${maven.surefire.version}</version>
|
||||||
|
<configuration>
|
||||||
|
<argLine>${app.testing.jvm.args}</argLine>
|
||||||
|
<additionalClasspathElements>
|
||||||
|
<!-- Adds the config directory to the test classpath for unit testing purposes -->
|
||||||
|
<additionalClasspathElement>${project.build.directory}/${project.build.finalName}/config</additionalClasspathElement>
|
||||||
|
<additionalClasspathElement>${project.build.directory}/${project.build.finalName}/module.properties</additionalClasspathElement>
|
||||||
|
</additionalClasspathElements>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
<dependencies>
|
||||||
|
<!-- SDK AMP Testing Dependencies -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.h2database</groupId>
|
||||||
|
<artifactId>h2</artifactId>
|
||||||
|
<version>${h2.version}</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>tk.skuro.alfresco</groupId>
|
||||||
|
<artifactId>h2-support</artifactId>
|
||||||
|
<version>${h2-support.version}</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework</groupId>
|
||||||
|
<artifactId>spring-test</artifactId>
|
||||||
|
<version>3.0.5.RELEASE</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<!-- Requires this explicit test dependency, for a Spring 3.0.5 bug
|
||||||
|
| See https://jira.springsource.org/browse/SPR-8527
|
||||||
|
-->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework</groupId>
|
||||||
|
<artifactId>spring-context</artifactId>
|
||||||
|
<version>3.0.6.RELEASE</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>${alfresco.groupId}</groupId>
|
||||||
|
<artifactId>alfresco-repository</artifactId>
|
||||||
|
<version>${alfresco.version}</version>
|
||||||
|
<classifier>config</classifier>
|
||||||
|
<scope>provided</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>${alfresco.groupId}</groupId>
|
||||||
|
<artifactId>alfresco-data-model</artifactId>
|
||||||
|
<version>${alfresco.version}</version>
|
||||||
|
<classifier>config</classifier>
|
||||||
|
<scope>provided</scope>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</profile>
|
||||||
|
|
||||||
|
<!-- Enable AMP project packing on a WAR and run embedded in Jetty -->
|
||||||
|
<profile>
|
||||||
|
<id>amp-to-war</id>
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<!-- Fetch and unpack Alfresco Repository / Share in the target / folder -->
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-dependency-plugin</artifactId>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>unpack-alfresco</id>
|
||||||
|
<phase>prepare-package</phase>
|
||||||
|
<goals><goal>unpack</goal></goals>
|
||||||
|
<configuration>
|
||||||
|
<outputDirectory>${alfresco.client.war.folder}</outputDirectory>
|
||||||
|
<artifactItems>
|
||||||
|
<artifactItem>
|
||||||
|
<groupId>${alfresco.groupId}</groupId>
|
||||||
|
<artifactId>${alfresco.client.war}</artifactId>
|
||||||
|
<type>war</type>
|
||||||
|
<version>${alfresco.version}</version>
|
||||||
|
</artifactItem>
|
||||||
|
</artifactItems>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
<!-- When the AMP runs locally, src/test/webapp and src/test/resources will contain -->
|
||||||
|
<!-- the location of the configuration files -->
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-resources-plugin</artifactId>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>copy-alfresco-test-resources</id>
|
||||||
|
<phase>prepare-package</phase>
|
||||||
|
<goals><goal>copy-resources</goal></goals>
|
||||||
|
<configuration>
|
||||||
|
<outputDirectory>${alfresco.client.war.folder}</outputDirectory>
|
||||||
|
<resources>
|
||||||
|
<resource>
|
||||||
|
<directory>src/test/webapp</directory>
|
||||||
|
</resource>
|
||||||
|
<resource>
|
||||||
|
<directory>${project.build.testOutputDirectory}</directory>
|
||||||
|
<targetPath>WEB-INF/classes</targetPath>
|
||||||
|
<filtering>${app.filtering.enabled}</filtering>
|
||||||
|
</resource>
|
||||||
|
</resources>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
<!-- The current AMP artifact is installed into the Alfresco
|
||||||
|
folder using alfresco-maven-plugin -->
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.alfresco.maven.plugin</groupId>
|
||||||
|
<artifactId>alfresco-maven-plugin</artifactId>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>amps-to-war-overlay</id>
|
||||||
|
<phase>package</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>install</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
<!-- If the integration-test phase is called, the integrated WAR + AMP is actually ran in Jetty -->
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.mortbay.jetty</groupId>
|
||||||
|
<artifactId>maven-jetty-plugin</artifactId>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>run-amp-to-war</id>
|
||||||
|
<goals>
|
||||||
|
<goal>run-exploded</goal>
|
||||||
|
</goals>
|
||||||
|
<phase>pre-integration-test</phase>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
<configuration>
|
||||||
|
<webApp>${alfresco.client.war.folder}</webApp>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
</profile>
|
||||||
|
<!-- Cleans Alfresco data folder, embedded DB and logs -->
|
||||||
|
<profile>
|
||||||
|
<id>purge</id>
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<!-- Cleaning Alfresco Repository storage/log folders/files -->
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-clean-plugin</artifactId>
|
||||||
|
<configuration>
|
||||||
|
<filesets>
|
||||||
|
<fileset>
|
||||||
|
<directory>${project.basedir}/${alfresco.data.location}</directory>
|
||||||
|
</fileset>
|
||||||
|
<fileset>
|
||||||
|
<directory>${app.log.dir}</directory>
|
||||||
|
<includes>
|
||||||
|
<include>*.log</include>
|
||||||
|
</includes>
|
||||||
|
</fileset>
|
||||||
|
</filesets>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
</profile>
|
||||||
|
<!-- Enforce SDK rules for clearer fast fail error messaging and safer usage -->
|
||||||
|
<profile>
|
||||||
|
<id>enforce-sdk-rules</id>
|
||||||
|
<activation>
|
||||||
|
<activeByDefault>true</activeByDefault>
|
||||||
|
</activation>
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-enforcer-plugin</artifactId>
|
||||||
|
<version>${maven.enforcer.plugin}</version>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>enforce-sdk-requirements</id>
|
||||||
|
<goals>
|
||||||
|
<goal>enforce</goal>
|
||||||
|
</goals>
|
||||||
|
<configuration>
|
||||||
|
<rules>
|
||||||
|
<!-- At this time the SDK is supported only for Alfresco 4.2.b and above versions -->
|
||||||
|
<requireProperty>
|
||||||
|
<property>alfresco.version</property>
|
||||||
|
<message>At this time the SDK is supported only for Alfresco 4.2.b and above versions</message>
|
||||||
|
<regex>^(4\.[2-9]|[5-9]).*</regex>
|
||||||
|
</requireProperty>
|
||||||
|
<!-- At this time the SDK is supported only for Alfresco 4.2.b and above versions -->
|
||||||
|
<requireProperty>
|
||||||
|
<property>alfresco.groupId</property>
|
||||||
|
<message>You need to select an Alfresco Edition (Community / Enterprise) by setting alfresco.groupId=org.alfresco|org.alfresco.enterprise</message>
|
||||||
|
<regex>(org\.alfresco|org\.alfresco\.enterprise)</regex>
|
||||||
|
</requireProperty>
|
||||||
|
<!-- Alfresco 4.2+ runs on Java 7 -->
|
||||||
|
<requireJavaVersion>
|
||||||
|
<version>[1.7.0,)</version>
|
||||||
|
<message>As the SDK works only with Alfresco 4.2+, and Alfresco 4.2+ requires Java 7, you need Java 7</message>
|
||||||
|
</requireJavaVersion>
|
||||||
|
</rules>
|
||||||
|
<fail>true</fail>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
</profile>
|
||||||
|
</profiles>
|
||||||
|
</project>
|
Reference in New Issue
Block a user