mirror of
https://github.com/Alfresco/alfresco-sdk.git
synced 2025-09-10 14:12:12 +00:00
Compare commits
400 Commits
alfresco-s
...
alfresco-s
Author | SHA1 | Date | |
---|---|---|---|
|
265814e487 | ||
|
5b6ea1e3bb | ||
|
1191057d56 | ||
|
5411098636 | ||
|
e63c849d6d | ||
|
013fed7669 | ||
|
1cae6a854f | ||
|
20d4486da9 | ||
|
cabce2d981 | ||
|
019c5c70e0 | ||
|
693fde6285 | ||
|
515d23de2c | ||
|
9a5e70f324 | ||
|
b57196f46e | ||
|
a565f66c76 | ||
|
b3808e3e8b | ||
|
3f51507ea7 | ||
|
0a082f3bfc | ||
|
35e2800858 | ||
|
4a56544cad | ||
|
9c2ac0c956 | ||
|
8d407356b7 | ||
|
42e5726313 | ||
|
9c28f38f9c | ||
|
1aff0f2a01 | ||
|
712eb22dd4 | ||
|
905f589169 | ||
|
b1139739b8 | ||
|
219389197a | ||
|
782740ef99 | ||
|
2ce90ecc93 | ||
|
b3a1dabf72 | ||
|
7928ae358b | ||
|
a204305226 | ||
|
0352e2fd07 | ||
|
af396f70ac | ||
|
8634cc1d37 | ||
|
a3a7e9f158 | ||
|
0d2c76cc0c | ||
|
a39f4248a2 | ||
|
97967c35e6 | ||
|
d92a8d14e0 | ||
|
c672e75db6 | ||
|
5ea45fcca1 | ||
|
df508d3535 | ||
|
dc8ac36265 | ||
|
0464f9bd66 | ||
|
ce64b89d1d | ||
|
232db55be7 | ||
|
584e3e0339 | ||
|
a6f0b34074 | ||
|
bf853d72c8 | ||
|
7f19645f20 | ||
|
e61146ea07 | ||
|
10809ad2ba | ||
|
3d2ff7b1e8 | ||
|
8998e37414 | ||
|
c3ae5760e8 | ||
|
89d4d3fd9a | ||
|
372afc6ba4 | ||
|
3908cc73b7 | ||
|
76d813f2f4 | ||
|
5edd1f7b43 | ||
|
12db1fcb17 | ||
|
3e4a793f5d | ||
|
fba08f9ab7 | ||
|
56300e35aa | ||
|
b4b0be82ae | ||
|
50f43f23d3 | ||
|
2ee5120413 | ||
|
7f861a9672 | ||
|
b199afcd7e | ||
|
7baf3fb0a1 | ||
|
54504b4962 | ||
|
1503134f77 | ||
|
71ed669795 | ||
|
7d9b7de8c8 | ||
|
7483212c1f | ||
|
3d30a5893b | ||
|
32666d167f | ||
|
b737483c18 | ||
|
4cdc281f7f | ||
|
f4c3ac7c84 | ||
|
af8c6c42c4 | ||
|
e61c08c650 | ||
|
cc14a39be4 | ||
|
c910fa2b40 | ||
|
3050c9deb4 | ||
|
1ce98f09aa | ||
|
6dc927e668 | ||
|
68155ef5a6 | ||
|
e5e0a7f76d | ||
|
ea4c12a836 | ||
|
d949a778ef | ||
|
099ac2ddeb | ||
|
b0bc6a38d5 | ||
|
1d1e89a86d | ||
|
517b20859e | ||
|
e27d6f1a70 | ||
|
10557e500d | ||
|
f7e4ea1b5c | ||
|
7838649c81 | ||
|
deaf4c06b8 | ||
|
067d751193 | ||
|
c0658f3a94 | ||
|
e378eec194 | ||
|
01e79d6953 | ||
|
b00ee7f5e5 | ||
|
6e5445a271 | ||
|
388f74eea3 | ||
|
2db3051599 | ||
|
8bb094b61a | ||
|
a4e79cc569 | ||
|
c14887f549 | ||
|
4e225147ea | ||
|
c5e92bdc25 | ||
|
ef59a6a39a | ||
|
42dc3659bd | ||
|
5d1fb4f4d9 | ||
|
185c4ad2bd | ||
|
0b85afc6fd | ||
|
9db0f5cff1 | ||
|
243f94227b | ||
|
330c66a1be | ||
|
ab4927afeb | ||
|
c48dffea69 | ||
|
b3391a67c3 | ||
|
465aa3de5a | ||
|
b32a78b7b3 | ||
|
7bd5c58136 | ||
|
5b21775793 | ||
|
1d551d1895 | ||
|
766847585e | ||
|
b366ae3ddd | ||
|
19369a23b5 | ||
|
93c28f5dde | ||
|
7792574dae | ||
|
e8976addea | ||
|
a7f2db61e8 | ||
|
2926a9ae83 | ||
|
246ae7a138 | ||
|
387a584aa1 | ||
|
edd8d8317b | ||
|
eb30a2d9e2 | ||
|
cf777840be | ||
|
efec137a10 | ||
|
210bee7d76 | ||
|
534e70a2c4 | ||
|
0fcec384fd | ||
|
9d1c2feaf2 | ||
|
709b820f2c | ||
|
217f135006 | ||
|
64843588f8 | ||
|
f1a7e645e4 | ||
|
e3ae54be9b | ||
|
2871883c7d | ||
|
3661a06206 | ||
|
436b9a455a | ||
|
5418b57325 | ||
|
376815c746 | ||
|
b76bb5730c | ||
|
7c4fc7a700 | ||
|
62dc99e9c6 | ||
|
ccee83f92d | ||
|
0027ef3ec4 | ||
|
32d286cb50 | ||
|
7017b057ea | ||
|
bb3780d31d | ||
|
2954b72765 | ||
|
13f6457fbd | ||
|
29006d1e93 | ||
|
301d0e81a0 | ||
|
4002c01134 | ||
|
64d53e0fe6 | ||
|
d1fb454772 | ||
|
cdcf9c6a96 | ||
|
9d7c80a147 | ||
|
beae915836 | ||
|
a6a199ad50 | ||
|
328faa3a5a | ||
|
cdaa995422 | ||
|
8617c29300 | ||
|
d2e21a38c6 | ||
|
a01573eff8 | ||
|
079b916d46 | ||
|
37275bcbf1 | ||
|
7d521e9f27 | ||
|
a7211c206b | ||
|
862c998542 | ||
|
29fdb576ab | ||
|
271ba3977f | ||
|
a1cbc0687d | ||
|
408fda1fd3 | ||
|
cb50841385 | ||
|
0d91902752 | ||
|
43405d037f | ||
|
4b98ff5846 | ||
|
45cf124566 | ||
|
0f500fab25 | ||
|
26c4364063 | ||
|
0c391693e4 | ||
|
92886f2ee9 | ||
|
991caa2191 | ||
|
f99521a851 | ||
|
49b489f181 | ||
|
424e6a5a26 | ||
|
a2b5e64848 | ||
|
6ae42f8fc0 | ||
|
c2ab1cf80a | ||
|
c7c4c49446 | ||
|
efbfc8fbba | ||
|
6e5bf3a757 | ||
|
4722c14121 | ||
|
d2c4dcc015 | ||
|
972c96ba0f | ||
|
067473669b | ||
|
3b0c2ddc9b | ||
|
9068c3209b | ||
|
4651f0a941 | ||
|
6bef9222eb | ||
|
a97975acec | ||
|
f0e604bd8c | ||
|
48a3eb6d7d | ||
|
0b79b0a71d | ||
|
3b25a7549c | ||
|
50c5c82f36 | ||
|
fff6bc4a41 | ||
|
c9a991698d | ||
|
97f0ea6119 | ||
|
7bf16b467b | ||
|
29c6a08066 | ||
|
00839a8170 | ||
|
646899610d | ||
|
126d31646e | ||
|
4c2ac6db7d | ||
|
6cd3e0c0c2 | ||
|
c6fbb76a39 | ||
|
706a6c2ccd | ||
|
c2f94e35bd | ||
|
8dd1ba923a | ||
|
0d158017e4 | ||
|
2c9fc00ea4 | ||
|
32a27e4f53 | ||
|
0577fcc168 | ||
|
c4dd6b01e6 | ||
|
eae6c13de5 | ||
|
0ca57b20a1 | ||
|
82cb58f472 | ||
|
779d53a051 | ||
|
5a35c948ca | ||
|
42a4805d93 | ||
|
1f18d34e8e | ||
|
3873d2907e | ||
|
86049b91bf | ||
|
8ff7f929e2 | ||
|
1fb478e77a | ||
|
f023ca2878 | ||
|
a891119b84 | ||
|
c84d0d4c87 | ||
|
d268c20c3a | ||
|
5291dc6e97 | ||
|
697ab7c3ec | ||
|
52a6938a66 | ||
|
7edac56eed | ||
|
fa828dede5 | ||
|
f5e3552283 | ||
|
ab9f384830 | ||
|
dced89eda6 | ||
|
3bced985d6 | ||
|
f0210c173a | ||
|
ea521ba7ee | ||
|
865ae6fd38 | ||
|
017dfcbff8 | ||
|
c25417e702 | ||
|
448b5c2929 | ||
|
ab29cc53fa | ||
|
228a98c566 | ||
|
82b7886a51 | ||
|
012dc70f43 | ||
|
b8377041a5 | ||
|
9071965850 | ||
|
1e5db412f7 | ||
|
37c26cfaa8 | ||
|
1cd4b82037 | ||
|
758ab83faf | ||
|
8862d67acd | ||
|
e4402a741f | ||
|
b1facc65de | ||
|
7668096829 | ||
|
ce7c374c1e | ||
|
68dda3b211 | ||
|
47a329a762 | ||
|
3ae8d043aa | ||
|
ba36d1ad5e | ||
|
f54fb5e3d3 | ||
|
1a8d8b76b6 | ||
|
55ac6917b7 | ||
|
993d5dcefe | ||
|
0411bc5b1d | ||
|
07bb743cfd | ||
|
ccb9f3d86f | ||
|
aebda9bf06 | ||
|
b7dbbe8995 | ||
|
c9b33b4f59 | ||
|
93dde46f51 | ||
|
addbc750c4 | ||
|
e302055caf | ||
|
3b7e32df20 | ||
|
8178eac5b8 | ||
|
b5ec7b415d | ||
|
278ba7f600 | ||
|
fef948b982 | ||
|
245a51402d | ||
|
3630cced6d | ||
|
892920c114 | ||
|
24500024ed | ||
|
85c7e11bb6 | ||
|
aede276f9b | ||
|
264d326bf2 | ||
|
d2868bdfae | ||
|
673461b6e2 | ||
|
6f1d01394d | ||
|
f5404b9d40 | ||
|
e6394e25b7 | ||
|
0fd842192b | ||
|
be8e10a556 | ||
|
3031b401a2 | ||
|
723b309670 | ||
|
051e967240 | ||
|
1f46a9e2ff | ||
|
3cbdb5dc8e | ||
|
07543c68d3 | ||
|
a07219e6e6 | ||
|
4e26291761 | ||
|
c2ac314930 | ||
|
08acf1f433 | ||
|
b9331c365f | ||
|
63bd9a63c0 | ||
|
f1dbb608d9 | ||
|
657d16b91c | ||
|
7739556c94 | ||
|
d7b0805cef | ||
|
0b8db99cd8 | ||
|
eba635c8f8 | ||
|
2782f30a42 | ||
|
a32a537206 | ||
|
49160034cf | ||
|
50dac567c2 | ||
|
9a7630acfb | ||
|
be11344137 | ||
|
db9d7d637c | ||
|
04fe0678d7 | ||
|
b46f173fb4 | ||
|
d69f7e4937 | ||
|
788347a5dd | ||
|
d6f11dd977 | ||
|
f0955cff98 | ||
|
05b2cfbb1e | ||
|
558d4b422c | ||
|
3010c9773a | ||
|
b7fff632e7 | ||
|
5b3b5d3914 | ||
|
9b5db76577 | ||
|
43ad42aac8 | ||
|
9c5f1e9e0d | ||
|
c46b0b86d2 | ||
|
99031d5def | ||
|
0bdacc4787 | ||
|
b6e170a0ce | ||
|
a37b121cb6 | ||
|
c7591ca848 | ||
|
54a067325a | ||
|
ceed7af6fe | ||
|
377aaa5459 | ||
|
b226302572 | ||
|
876f6286fc | ||
|
5d59d6cd27 | ||
|
6d4b901129 | ||
|
0854929d99 | ||
|
8415da72b0 | ||
|
14cd4be39c | ||
|
f2f5698a3b | ||
|
5b83b99549 | ||
|
181951ed99 | ||
|
a4711142e6 | ||
|
78d1466220 | ||
|
d99539c9b0 | ||
|
30bfc14422 | ||
|
641aa6bb8e | ||
|
f031c76a41 | ||
|
2ad03e3f5c | ||
|
7275ba32e8 | ||
|
9bf50267dd | ||
|
bbe3de2abb | ||
|
5c01e8127c | ||
|
9a1b97e64d | ||
|
b3955a1b4f | ||
|
2e546a1cae | ||
|
9dd9f530bb | ||
|
3e7a6d83a9 |
52
.ci.settings.xml
Normal file
52
.ci.settings.xml
Normal file
@@ -0,0 +1,52 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
|
||||
|
||||
<servers>
|
||||
<server>
|
||||
<id>alfresco-private-repository</id>
|
||||
<username>${env.MAVEN_USERNAME}</username>
|
||||
<password>${env.MAVEN_PASSWORD}</password>
|
||||
</server>
|
||||
<server>
|
||||
<id>activiti-private-repository</id>
|
||||
<username>${env.MAVEN_USERNAME}</username>
|
||||
<password>${env.MAVEN_PASSWORD}</password>
|
||||
</server>
|
||||
<server>
|
||||
<id>alfresco-public-snapshots</id>
|
||||
<username>${env.MAVEN_USERNAME}</username>
|
||||
<password>${env.MAVEN_PASSWORD}</password>
|
||||
</server>
|
||||
<server>
|
||||
<id>alfresco-public</id>
|
||||
<username>${env.MAVEN_USERNAME}</username>
|
||||
<password>${env.MAVEN_PASSWORD}</password>
|
||||
</server>
|
||||
<server>
|
||||
<id>alfresco-plugin-public</id>
|
||||
<username>${env.MAVEN_USERNAME}</username>
|
||||
<password>${env.MAVEN_PASSWORD}</password>
|
||||
</server>
|
||||
<server>
|
||||
<id>alfresco-plugin-public-snapshots</id>
|
||||
<username>${env.MAVEN_USERNAME}</username>
|
||||
<password>${env.MAVEN_PASSWORD}</password>
|
||||
</server>
|
||||
<server>
|
||||
<id>alfresco-internal-snapshots</id>
|
||||
<username>${env.MAVEN_USERNAME}</username>
|
||||
<password>${env.MAVEN_PASSWORD}</password>
|
||||
</server>
|
||||
<server>
|
||||
<id>alfresco-internal</id>
|
||||
<username>${env.MAVEN_USERNAME}</username>
|
||||
<password>${env.MAVEN_PASSWORD}</password>
|
||||
</server>
|
||||
<server>
|
||||
<id>central-releases-staging</id>
|
||||
<username>${env.MAVEN_CENTRAL_USERNAME}</username>
|
||||
<password>${env.MAVEN_CENTRAL_PASSWORD}</password>
|
||||
</server>
|
||||
</servers>
|
||||
</settings>
|
138
.github/workflows/ci.yml
vendored
Normal file
138
.github/workflows/ci.yml
vendored
Normal file
@@ -0,0 +1,138 @@
|
||||
name: Alfresco SDK CI
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
branches:
|
||||
- master
|
||||
- fix/**
|
||||
- feature/**
|
||||
- sdk-4.5
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- fix/**
|
||||
- feature/**
|
||||
- sdk-4.5
|
||||
workflow_dispatch:
|
||||
|
||||
env:
|
||||
MAVEN_USERNAME: ${{ secrets.NEXUS_USERNAME }}
|
||||
MAVEN_PASSWORD: ${{ secrets.NEXUS_PASSWORD }}
|
||||
MAVEN_CENTRAL_USERNAME: ${{ secrets.OSS_SONATYPE_USERNAME }}
|
||||
MAVEN_CENTRAL_PASSWORD: ${{ secrets.OSS_SONATYPE_PASSWORD }}
|
||||
MAVEN_CLI_OPTS: "-B -q -e -fae -V -DinstallAtEnd=true -U"
|
||||
|
||||
jobs:
|
||||
pre_commit:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: Alfresco/alfresco-build-tools/.github/actions/pre-commit@v1.35.0
|
||||
|
||||
build:
|
||||
name: "Build application"
|
||||
runs-on: ubuntu-latest
|
||||
needs: [pre_commit]
|
||||
if: "!contains(github.event.head_commit.message, '[skip tests]')"
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v1.35.0
|
||||
- name: "Build"
|
||||
run: mvn install -DskipTests=true -Dmaven.javadoc.skip=true -B -V
|
||||
- name: "Verify"
|
||||
run: mvn $MAVEN_CLI_OPTS verify -Dlogging.root.level=off -Dspring.main.banner-mode=off
|
||||
|
||||
tests:
|
||||
name: ${{ matrix.name }}
|
||||
runs-on: ubuntu-latest
|
||||
needs: [build]
|
||||
if: >
|
||||
!(failure() || cancelled()) &&
|
||||
!contains(github.event.head_commit.message, '[skip tests]')
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- name: "current version Java 17"
|
||||
java-version: 17
|
||||
- name: "23.1 Enterprise Java 17"
|
||||
java-version: 17
|
||||
suite: -Penterprise-231-tests
|
||||
- name: "23.1 Community Java 17"
|
||||
java-version: 17
|
||||
suite: -Pcommunity-231-tests
|
||||
- name: "7.4 Enterprise Java 17"
|
||||
java-version: 17
|
||||
suite: -Penterprise-74-tests
|
||||
- name: "7.4 Community Java 17"
|
||||
java-version: 17
|
||||
suite: -Pcommunity-74-tests
|
||||
- name: "7.4 Enterprise Java 11"
|
||||
java-version: 11
|
||||
suite: -Penterprise-74-tests
|
||||
- name: "7.4 Community Java 11"
|
||||
java-version: 11
|
||||
suite: -Pcommunity-74-tests
|
||||
- name: "7.3 Enterprise Java 17"
|
||||
java-version: 17
|
||||
suite: -Penterprise-73-tests
|
||||
- name: "7.3 Community Java 17"
|
||||
java-version: 17
|
||||
suite: -Pcommunity-73-tests
|
||||
- name: "7.3 Enterprise Java 11"
|
||||
java-version: 11
|
||||
suite: -Penterprise-73-tests
|
||||
- name: "7.3 Community Java 11"
|
||||
java-version: 11
|
||||
suite: -Pcommunity-73-tests
|
||||
- name: "7.2 Enterprise"
|
||||
java-version: 11
|
||||
suite: -Penterprise-72-tests
|
||||
- name: "7.2 Community"
|
||||
java-version: 11
|
||||
suite: -Pcommunity-72-tests
|
||||
- name: "7.1 Enterprise"
|
||||
java-version: 11
|
||||
suite: -Penterprise-71-tests
|
||||
- name: "7.1 Community"
|
||||
java-version: 11
|
||||
suite: -Pcommunity-71-tests
|
||||
- name: "7.0 Enterprise"
|
||||
java-version: 11
|
||||
suite: -Penterprise-70-tests
|
||||
- name: "7.0 Community"
|
||||
java-version: 11
|
||||
suite: -Pcommunity-70-tests
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v1.35.0
|
||||
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v1.35.0
|
||||
with:
|
||||
java-version: ${{ matrix.java-version }}
|
||||
- name: "Login to Docker Hub"
|
||||
uses: docker/login-action@v2.1.0
|
||||
with:
|
||||
username: ${{ secrets.DOCKER_USERNAME }}
|
||||
password: ${{ secrets.DOCKER_PASSWORD }}
|
||||
- name: "Login to Quay.io"
|
||||
uses: docker/login-action@v2.1.0
|
||||
with:
|
||||
registry: quay.io
|
||||
username: ${{ secrets.QUAY_USERNAME }}
|
||||
password: ${{ secrets.QUAY_PASSWORD }}
|
||||
- name: "Build"
|
||||
run: mvn clean install -B ${{ matrix.suite }}
|
||||
|
||||
publish:
|
||||
name: "Publish artifacts"
|
||||
runs-on: ubuntu-latest
|
||||
needs: [tests]
|
||||
if: >
|
||||
!(failure() || cancelled()) &&
|
||||
github.event_name != 'pull_request'
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v1.35.0
|
||||
- name: "Build"
|
||||
run: mvn install -DskipTests=true -Dmaven.javadoc.skip=true -B -V
|
||||
- name: "Publish"
|
||||
run: mvn $MAVEN_CLI_OPTS deploy -DskipTests
|
1
.gitignore
vendored
1
.gitignore
vendored
@@ -12,3 +12,4 @@ pom.xml.next
|
||||
release.properties
|
||||
**.settings
|
||||
**bin
|
||||
*.DS_Store
|
||||
|
10
.pre-commit-config.yaml
Normal file
10
.pre-commit-config.yaml
Normal file
@@ -0,0 +1,10 @@
|
||||
default_language_version:
|
||||
# force all unspecified python hooks to run python3
|
||||
python: python3
|
||||
|
||||
repos:
|
||||
- repo: https://github.com/pre-commit/pre-commit-hooks
|
||||
rev: v3.4.0
|
||||
hooks:
|
||||
- id: check-yaml
|
||||
args: [--allow-multiple-documents]
|
67
ISSUE_TEMPLATE.md
Normal file
67
ISSUE_TEMPLATE.md
Normal file
@@ -0,0 +1,67 @@
|
||||
<!--
|
||||
|
||||
If you are reporting a new issue, make sure that we do not have any duplicates
|
||||
already open. You can ensure this by searching the issue list for this
|
||||
repository. If there is a duplicate, please close your issue and add a comment
|
||||
to the existing issue instead.
|
||||
|
||||
If you suspect your issue is a bug, please edit your issue description to
|
||||
include the BUG REPORT INFORMATION shown below. If you fail to provide this
|
||||
information within 7 days, we cannot debug your issue and will close it. We
|
||||
will, however, reopen it if you later provide the information.
|
||||
|
||||
---------------------------------------------------
|
||||
GENERAL SUPPORT INFORMATION
|
||||
---------------------------------------------------
|
||||
|
||||
The GitHub issue tracker is for bug reports and feature requests.
|
||||
General support can be found at the following locations:
|
||||
|
||||
- Alfresco Community - https://community.alfresco.com/community/ecm
|
||||
- Post a question on StackOverflow, using the Alfresco tag
|
||||
|
||||
-->
|
||||
|
||||
|
||||
## I'm submitting a ... (check one with "x")
|
||||
```
|
||||
[ ] bug report => search github for a similar issue or PR before submitting
|
||||
[ ] feature request
|
||||
```
|
||||
|
||||
<!--- Provide a general summary of the issue in the Title above -->
|
||||
|
||||
## Expected Behavior
|
||||
<!--- If you're describing a bug, tell us what should happen -->
|
||||
<!--- If you're suggesting a change/improvement, tell us how it should work -->
|
||||
|
||||
## Current Behavior
|
||||
<!--- If describing a bug, tell us what happens instead of the expected behavior -->
|
||||
<!--- If suggesting a change/improvement, explain the difference from current behavior -->
|
||||
|
||||
## Possible Solution
|
||||
<!--- Not obligatory, but suggest a fix/reason for the bug, -->
|
||||
<!--- or ideas how to implement the addition or change -->
|
||||
|
||||
## Steps to Reproduce (for bugs)
|
||||
<!--- Provide a link to a live example, or an unambiguous set of steps to -->
|
||||
<!--- reproduce this bug. Include code to reproduce, if relevant -->
|
||||
1.
|
||||
2.
|
||||
3.
|
||||
4.
|
||||
5.
|
||||
|
||||
## Context
|
||||
<!--- How has this issue affected you? What are you trying to accomplish? -->
|
||||
<!--- Providing context helps us come up with a solution that is most useful in the real world -->
|
||||
|
||||
## Your Environment
|
||||
<!--- Include as many relevant details about the environment you experienced the bug in -->
|
||||
* Alfresco SDK version used: <!-- 2.1 / 2.2 / 3.0betaX-->
|
||||
* Alfresco version used: <!-- Enterprise 5.1, Community 5.0.f or ...-->
|
||||
* Output of command 'mvn -version': <!-- Maven/JDK version-->
|
||||
* Link to your project: <!-- optional for having a minimal example-->
|
||||
|
||||
## Additional information
|
||||
<!-- include screenshots or any other hint you mave have for us -->
|
140
README.md
140
README.md
@@ -1,57 +1,138 @@
|
||||
# [](#features) Alfresco SDK
|
||||
|
||||
This is the home of the Alfresco SDK. The Alfresco SDK is used by developers to build extensions for the Alfresco content management system. It is based on [Apache Maven](http://maven.apache.org/), compatible with major IDEs and enables Rapid Application Development (RAD) and Test Driven Development (TDD).
|
||||
|
||||
[](https://github.com/Alfresco/alfresco-sdk/actions/workflows/ci.yml)
|
||||
[](https://github.com/pre-commit/pre-commit)
|
||||

|
||||
|
||||
This is the home of the Alfresco SDK. The Alfresco SDK is used by developers to build extensions for the Alfresco Digital Business Platform. It is based on
|
||||
[Apache Maven](http://maven.apache.org/), compatible with major IDEs and enables [Rapid Application Development (RAD)](https://en.wikipedia.org/wiki/Rapid_application_development)
|
||||
and [Test Driven Development (TDD)](https://en.wikipedia.org/wiki/Test-driven_development).
|
||||
|
||||
## License
|
||||
This project is released under the [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.html). If you are an Enterprise customer check the [Support](#alfresco-enterprise-customers-and-partners-support) section.
|
||||
This project is released under the [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.html) license.
|
||||
If you are an Enterprise customer check the [Support](#alfresco-enterprise-customers-and-partners-support) section.
|
||||
|
||||
## News
|
||||
|
||||
- 2015-10-19: SDK 2.1.1 released to Maven Central. Docs for [Community](http://docs.alfresco.com/community/concepts/alfresco-sdk-intro.html), [Enterprise](http://docs.alfresco.com/5.0/concepts/alfresco-sdk-intro.html), [Release notes](https://artifacts.alfresco.com/nexus/content/repositories/alfresco-docs/alfresco-sdk-aggregator/latest/github-report.html)
|
||||
- 2015-05-20: SDK 2.1.0 released to Maven Central. Docs for [Community](http://docs.alfresco.com/community/concepts/alfresco-sdk-intro.html), [Enterprise](http://docs.alfresco.com/5.0/concepts/alfresco-sdk-intro.html), [Release notes](https://artifacts.alfresco.com/nexus/content/repositories/alfresco-docs/alfresco-sdk-aggregator/latest/github-report.html)
|
||||
- 2014-12-23: SDK 2.0.0 release to Maven Central. [Docs](http://docs.alfresco.com/sdk2.0/concepts/alfresco-sdk-intro.html), [Release Notes](https://artifacts.alfresco.com/nexus/content/repositories/alfresco-docs/alfresco-sdk-aggregator/archive/2.0.0/github-report.htm)
|
||||
- 2023-11: Alfresco SDK 4.7.0 released
|
||||
- 2023-06: Alfresco SDK 4.6.0 released
|
||||
- 2022-10: Alfresco SDK 4.5.0 released
|
||||
- 2022-03: Alfresco SDK 4.4.0 released
|
||||
- 2021-10: Alfresco SDK 4.3.0 released
|
||||
- 2021-02: Alfresco SDK 4.2.0 released
|
||||
- 2019-10: Alfresco SDK 4.1.0 released
|
||||
- 2019-03: Alfresco SDK 4.0.0 released
|
||||
- 2019-03: Alfresco SDK 3.1.0 released
|
||||
- 2017-06-23: Alfresco SDK 3.0.1 released, [containing a critical bugfix](https://github.com/Alfresco/alfresco-sdk/issues/461)
|
||||
- 2017-04-01: Alfresco SDK 3.0.0 released
|
||||
- 2017-03-27: After years of hard work, countless iterations and gathering feedback, SDK 3.0 has finally been merged into the master branch, ready for release in the coming days
|
||||
- 2016-02-20: SDK 2.2.0 released to Maven Central. Docs for [Community](http://docs.alfresco.com/community/concepts/alfresco-sdk-intro.html), [Enterprise](http://docs.alfresco.com/5.1/concepts/alfresco-sdk-intro.html), [Release notes](https://artifacts.alfresco.com/nexus/content/repositories/alfresco-docs/alfresco-sdk-aggregator/latest/github-report.html)
|
||||
- 2015-10-19: SDK 2.1.1 released to Maven Central. Docs for [Community](http://docs.alfresco.com/community/concepts/alfresco-sdk-intro.html), [Enterprise](http://docs.alfresco.com/5.0/concepts/alfresco-sdk-intro.html)
|
||||
- 2015-05-20: SDK 2.1.0 released to Maven Central. Docs for [Community](http://docs.alfresco.com/community/concepts/alfresco-sdk-intro.html), [Enterprise](http://docs.alfresco.com/5.0/concepts/alfresco-sdk-intro.html)
|
||||
- 2014-12-23: SDK 2.0.0 release to Maven Central. [Docs](http://docs.alfresco.com/sdk2.0/concepts/alfresco-sdk-intro.html), [Release Notes](https://artifacts.alfresco.com/nexus/content/repositories/alfresco-docs/alfresco-sdk-aggregator/archive/2.0.0/github-report.htm)
|
||||
- 2014-08-22: First SNAPSHOT of SDK 2.0.0 in the [OSS Sonatype Repository](https://oss.sonatype.org/content/repositories/snapshots/org/alfresco/maven/alfresco-sdk-parent/2.0.0-SNAPSHOT/)!
|
||||
- 2014-07: Project fully migrated from [Google Code](https://code.google.com/p/maven-alfresco-archetypes).
|
||||
|
||||
## User Getting Started
|
||||
|
||||
### Important Notice about ACS 7.2
|
||||
|
||||
Please refer to https://github.com/Alfresco/alfresco-sdk/issues/635 to fix the Search Services 403 problem.
|
||||
|
||||
### Important Notice about ACS 7.1
|
||||
|
||||
#### Share Version Number
|
||||
|
||||
Since ACS 7.1, Share build pipeline has been refactored, and you now have to specify the internal
|
||||
Share version number, in addition to the version of the image, because they are not the same anymore.
|
||||
|
||||
This number can be located in the main pom.xml of the project used to build Share, hence:
|
||||
|
||||
- property `<alfresco-community-share.version>` of [acs-community-packaging](https://github.com/Alfresco/acs-community-packaging/blob/7.1.0/pom.xml#L17) (Community)
|
||||
- property `<alfresco-enterprise-share.version>`of [acs-packaging](https://github.com/Alfresco/acs-packaging/blob/7.1.0.1/pom.xml#L18) (Enterprise)
|
||||
|
||||
So, if for example you want to use the community version of `7.1.0.1`, you can go on acs-community-packaging,
|
||||
open the `7.1.0.1` release tag, browse its files, open the pom.xml in the root,
|
||||
then copy the value of `<alfresco-community-share.version>`.
|
||||
|
||||
You'll then need to paste this value inside the SDK property `<alfresco.share.version>`.
|
||||
|
||||
#### Alternate Docker User
|
||||
|
||||
- ACS 6 used to run everything as `root`.
|
||||
- ACS 7 introduced an `alfresco` user, that should've been used after the `root` user completed its configurations in the Dockerfile.
|
||||
|
||||
Due to a bug, this wasn't working in earlier SDKs, and has been fixed in SDK 4.3.
|
||||
|
||||
In order to be retro-compatible with ACS 6, however, the user is specified in the SDK property `<alfresco.platform.docker.user>`.
|
||||
|
||||
Hence, its values (already in place) are `root` for ACS 6, and `alfresco` for ACS 7+.
|
||||
|
||||
#### Log file location
|
||||
|
||||
To prevent writing permission problems when logging with the non-root user,
|
||||
the `alfresco.log` file has also been moved to a more appropriate location (Tomcat logs instead of Tomcat root).
|
||||
|
||||
### Important Notice about Version Numbers
|
||||
|
||||
In Q4 2020, Alfresco Platform has undergone a major structural refactoring.
|
||||
|
||||
Depending on the Platform version desired, you might need to use SDK 4.1, 4.3, 4.4, 4.5 or SDK 4.6 instead of SDK 4.7.
|
||||
|
||||
- For Enterprise and Community versions of 7.x, SDK 4.4 or higher must be used
|
||||
- For Enterprise versions of 6.0.x, 6.1.x, 6.2.x newer than November 2020, SDK 4.3 must be used
|
||||
- For Enterprise and Community versions of 6.0.x, 6.1.x, 6.2.x older than November 2020, SDK 4.1 must be used
|
||||
|
||||
It's also important to remember that:
|
||||
|
||||
- Community Platform versions are built by [acs-community-packaging](https://github.com/Alfresco/acs-community-packaging)
|
||||
- Community Docker images are published on [Docker Hub](https://hub.docker.com/r/alfresco/alfresco-content-repository-community/tags?page=1&ordering=last_updated)
|
||||
- Enterprise Platform versions are built by [acs-packaging](https://github.com/Alfresco/acs-packaging)
|
||||
- Enterprise Docker images are published on *Quay.io*
|
||||
|
||||
### Latest Documentation
|
||||
To get started with Alfresco SDK 2.1.1 (latest) visit the offical Alfresco Documentation for:
|
||||
To get started with **Alfresco SDK 4.7.x** (latest) visit the [Alfresco Documentation](docs/README.md).
|
||||
|
||||
- [Alfresco Community 5.0.d and above](http://docs.alfresco.com/community/concepts/alfresco-sdk-intro.html)
|
||||
- [Alfresco Enterprise 5.0.1 and above](http://docs.alfresco.com/5.0/concepts/alfresco-sdk-intro.html)
|
||||
|
||||
#### Previous versions Documentation
|
||||
- Documentation for [Alfresco SDK 2.0](http://docs.alfresco.com/sdk2.0/concepts/alfresco-sdk-intro.html) (compatible with Alfresco 5.0.d Community and 5.0.0 Enterprise)
|
||||
- Documentation for [Alfresco SDK 1.1.1](http://docs.alfresco.com/4.2/concepts/dev-extensions-maven-sdk-intro.html) (compatible with Alfresco 4.2)
|
||||
|
||||
### Samples
|
||||
Sample extension projects that use the SDK, maintained by @ohej in the [Alfresco SDK Samples project](https://github.com/Alfresco/alfresco-sdk-samples/).
|
||||
|
||||
### Command reference
|
||||
A list of supported features and commands, explanation of Maven profiles and commands is kept in the [Alfresco Official Docs](http://docs.alfresco.com/5.0/concepts/alfresco-sdk-cmd-reference.html).
|
||||
|
||||
### Want to get up to speed quickly in Eclipse? Check out this video!
|
||||
|
||||
[](https://www.youtube.com/watch?v=utYZaVe9Nd0)
|
||||
#### Documentation about Previous Versions
|
||||
| SDK Version | Alfresco Enterprise Version | Alfresco Community Version | Documentation |
|
||||
|-------------|:-------------------------------------------------------:|:-------------------------------------------------------:|:---------------------------------------------------------------------------|
|
||||
| SDK 4.7 | Alfresco 7.0.x / 7.1.x / 7.2.x / 7.3.x / 7.4.x / 23.1.x | Alfresco 7.0.x / 7.1.x / 7.2.x / 7.3.x / 7.4.x / 23.1.x | https://github.com/Alfresco/alfresco-sdk/tree/master/docs/README.md |
|
||||
| SDK 4.6 | Alfresco 7.0.x / 7.1.x / 7.2.x / 7.3.x / 7.4.x | Alfresco 7.0.x / 7.1.x / 7.2.x / 7.3.x / 7.4.x | https://github.com/Alfresco/alfresco-sdk/tree/master/docs/README.md |
|
||||
| SDK 4.5 | Alfresco 7.0.x / 7.1.x / 7.2.x / 7.3.x | Alfresco 7.0.x / 7.1.x / 7.2.x / 7.3.x | https://github.com/Alfresco/alfresco-sdk/tree/master/docs/README.md |
|
||||
| SDK 4.4 | Alfresco 7.0.x / 7.1.x / 7.2.x | Alfresco 7.0.x / 7.1.x / 7.2.x | https://github.com/Alfresco/alfresco-sdk/tree/master/docs/README.md |
|
||||
| SDK 4.3 | Alfresco 6.0.x / 6.1.x / 6.2.x / 7.0.x / 7.1.x | Alfresco 7.0.x / 7.1.x | https://github.com/Alfresco/alfresco-sdk/tree/master/docs/README.md |
|
||||
| SDK 4.2 | Alfresco 6.0.x / 6.1.x / 6.2.x / 7.0.x | Alfresco 7.0.x | https://github.com/Alfresco/alfresco-sdk/tree/master/docs/README.md |
|
||||
| SDK 4.1 | Alfresco 6.0.x / 6.1.x / 6.2.x | Alfresco 6.0.x / 6.1.x / 6.2.x | https://github.com/Alfresco/alfresco-sdk/blob/sdk-4.1/docs/README.md |
|
||||
| SDK 4.0 | Alfresco 6.0.x / 6.1.x | Alfresco 6.0.x / 6.1.x | https://github.com/Alfresco/alfresco-sdk/blob/sdk-4.0/docs/README.md |
|
||||
| SDK 3.1 | Alfresco 5.2.x | Alfresco 5.2.x | http://docs.alfresco.com/5.2/concepts/sdk-intro.html |
|
||||
| SDK 3.0 | Alfresco 5.2.x | Alfresco 5.2.x | http://docs.alfresco.com/5.2/concepts/sdk-intro.html |
|
||||
| SDK 2.2 | Alfresco 5.1.x | Alfresco 5.1.x | https://docs.alfresco.com/5.1/concepts/alfresco-sdk-intro.html |
|
||||
| SDK 2.1 | Alfresco 5.0.1 | Alfresco 5.0.d | https://docs.alfresco.com/sdk2.1/concepts/alfresco-sdk-intro.html |
|
||||
| SDK 2.0 | Alfresco 5.0.0 | Alfresco 5.0.c | https://docs.alfresco.com/sdk2.0/concepts/alfresco-sdk-intro.html |
|
||||
| SDK 1.1.1 | Alfresco 4.2.x | Alfresco 4.2.x | https://docs.alfresco.com/4.2/concepts/dev-extensions-maven-sdk-intro.html |
|
||||
|
||||
## Reporting Issues and Community Support
|
||||
Report issues (and contribute!) [here](https://github.com/Alfresco/alfresco-sdk/issues?milestone=1&state=open). You can also join the [Alfresco list on Google Groups](https://groups.google.com/forum/#!forum/maven-alfresco) or join us on the [IRC Channel](http://chat.alfresco.com/).
|
||||
Report issues (and contribute!) [here](https://github.com/Alfresco/alfresco-sdk/issues?milestone=1&state=open) or join us on the [IRC Channel](http://chat.alfresco.com/).
|
||||
|
||||
## Alfresco Enterprise Customers and Partners Support
|
||||
If you are an Alfresco Customer please check the [SDK Support status](http://www.alfresco.com/services/subscription/technical-support/product-support-status) for the version you are using and the [Compatibily Matrix](http://docs.alfresco.com/community/concepts/alfresco-sdk-compatibility.html) for the SDK / Alfresco compatibility. If your version is in Limited or Full Support, you can raise issues via the [Support Portal](http://support.alfresco.com).
|
||||
If you are an Alfresco Customer
|
||||
please check the [SDK Support status](http://www.alfresco.com/services/subscription/technical-support/product-support-status)
|
||||
for the version you are using. If your version is in Limited or Full Support and you need help, visit the [Support Portal](http://support.alfresco.com).
|
||||
|
||||
## Maven repositories
|
||||
- As of version 2.0-beta-1, The Alfresco SDK is released in [Maven Central](http://search.maven.org/#search|ga|1|alfresco-sdk). Previous versions are available in the [Alfresco Artifacts Repository](https://artifacts.alfresco.com/).
|
||||
- As of version 2.0-beta-1, The Alfresco SDK is released in [Maven Central](http://search.maven.org/#search|ga|1|alfresco-sdk). Previous versions are available
|
||||
in the [Alfresco Artifacts Repository](https://artifacts.alfresco.com/).
|
||||
- Alfresco (Community and Enterprise) artifacts are hosted in the [Alfresco Artifacts Repository](https://artifacts.alfresco.com/).
|
||||
- Alfresco Community artifacts (JARs, WARs, AMPs, poms) and SDK artifacts are publicly available.
|
||||
|
||||
*NOTE:* For Enterprise and Premiere licensed software access you need to get credential via the Alfresco Enterprise Support. See [Maven Alfresco Enterprise setup](http://docs.alfresco.com/5.0/concepts/alfresco-sdk-using-enterprise-edition.html).
|
||||
*NOTE:* By default the Alfresco SDK will use Community Edition releases but it can be configured to use Enterprise Edition releases. Enterprise and Premier
|
||||
customers can use the SDK with Enterprise Edition releases by following the process described in [Working with Enterprise](docs/advanced-topics/working-with-enterprise/README.md).
|
||||
|
||||
### Alfresco Artifacts Repository
|
||||
|
||||
#### Alfresco Releases
|
||||
You can use the following snippet in your pom.xml to access releases on Alfresco Artifact repository:
|
||||
You can use the following snippet in your pom.xml to access releases from the Alfresco Artifact repository:
|
||||
|
||||
```xml
|
||||
<repository>
|
||||
@@ -70,6 +151,9 @@ To test new unreleased (unsupported) features, you can use the following snippet
|
||||
</repository>
|
||||
```
|
||||
|
||||
## Docker registries
|
||||
- Alfresco Community Docker images are publicly available at the [Alfresco's Docker Hub profile](https://hub.docker.com/u/alfresco/).
|
||||
- Alfresco Enterprise Docker images are hosted at [Quay.io](https://quay.io/). Its configuration process is described in detail in [How to configure private Alfresco Docker registry](docs/advanced-topics/working-with-enterprise/enterprise-docker-registry.md).
|
||||
|
||||
## For Developers that want to contribute to the SDK
|
||||
See the [Developers Wiki page](https://github.com/Alfresco/alfresco-sdk/wiki/Developer-Wiki).
|
||||
|
||||
|
1
archetypes/.gitignore
vendored
Normal file
1
archetypes/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
*.DS_Store
|
@@ -5,16 +5,16 @@
|
||||
<groupId>org.alfresco.maven.archetype</groupId>
|
||||
<artifactId>alfresco-allinone-archetype</artifactId>
|
||||
<packaging>maven-archetype</packaging>
|
||||
<name>Maven Alfresco SDK - All-in-One Archetype</name>
|
||||
<description>Sample multi-module project for All-in-One development on the Alfresco plaftorm. Includes modules for: Repository WAR overlay, Repository AMP, Share WAR overlay, Solr configuration, and embedded Tomcat runner</description>
|
||||
|
||||
<name>Alfresco SDK - All-in-One Archetype</name>
|
||||
<description>Sample multi-module project for All-in-One development on the Alfresco platform. Includes modules for Platform/Repository JAR and Share JAR</description>
|
||||
|
||||
<parent>
|
||||
<groupId>org.alfresco.maven</groupId>
|
||||
<artifactId>alfresco-sdk-aggregator</artifactId>
|
||||
<version>3.0.0-beta-3</version>
|
||||
<version>4.7.0</version>
|
||||
<relativePath>../../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
|
||||
<build>
|
||||
<resources>
|
||||
<resource>
|
||||
@@ -23,7 +23,6 @@
|
||||
<include>archetype-resources/pom.xml</include>
|
||||
<include>archetype-resources/run.sh</include>
|
||||
<include>archetype-resources/run.bat</include>
|
||||
<include>archetype-resources/runner/src/main/webapp/index.html</include>
|
||||
<include>META-INF/maven/archetype-metadata.xml</include>
|
||||
</includes>
|
||||
<filtering>true</filtering>
|
||||
@@ -34,7 +33,6 @@
|
||||
<exclude>archetype-resources/pom.xml</exclude>
|
||||
<exclude>archetype-resources/run.sh</exclude>
|
||||
<exclude>archetype-resources/run.bat</exclude>
|
||||
<exclude>archetype-resources/runner/src/main/webapp/index.html</exclude>
|
||||
<exclude>META-INF/maven/archetype-metadata.xml</exclude>
|
||||
</excludes>
|
||||
<filtering>false</filtering>
|
||||
@@ -43,13 +41,14 @@
|
||||
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-resources-plugin</artifactId>
|
||||
<version>2.7</version>
|
||||
<configuration>
|
||||
<useDefaultDelimiters>false</useDefaultDelimiters>
|
||||
<delimiters>
|
||||
<delimiter>@@</delimiter>
|
||||
</delimiters>
|
||||
<addDefaultExcludes>false</addDefaultExcludes>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
|
@@ -0,0 +1,2 @@
|
||||
def file = new File( request.getOutputDirectory(), request.getArtifactId()+"/run.sh" );
|
||||
file.setExecutable(true, false);
|
@@ -10,14 +10,14 @@
|
||||
</requiredProperty>
|
||||
</requiredProperties>
|
||||
<modules>
|
||||
<module id="${rootArtifactId}-platform-jar"
|
||||
name="${rootArtifactId}-platform-jar"
|
||||
dir="__rootArtifactId__-platform-jar">
|
||||
<module id="${rootArtifactId}-platform"
|
||||
name="${rootArtifactId}-platform"
|
||||
dir="__rootArtifactId__-platform">
|
||||
<fileSets>
|
||||
<fileSet filtered="false" packaged="false" encoding="UTF-8">
|
||||
<directory>src/main/assembly</directory>
|
||||
<includes>
|
||||
<include>**/*.xml</include>
|
||||
<include>**</include>
|
||||
</includes>
|
||||
</fileSet>
|
||||
<fileSet filtered="true" packaged="true" encoding="UTF-8">
|
||||
@@ -39,35 +39,27 @@
|
||||
</includes>
|
||||
<excludes>
|
||||
<exclude>**/*-context.xml</exclude>
|
||||
<exclude>**/log4j.properties</exclude>
|
||||
</excludes>
|
||||
</fileSet>
|
||||
<fileSet encoding="UTF-8" filtered="true" packaged="false">
|
||||
<directory>src/main/resources</directory>
|
||||
<includes>
|
||||
<include>**/*-context.xml</include>
|
||||
<include>**/log4j.properties</include>
|
||||
</includes>
|
||||
</fileSet>
|
||||
<fileSet encoding="UTF-8" filtered="false">
|
||||
<directory>src/test/resources</directory>
|
||||
<includes>
|
||||
<include>**</include>
|
||||
</includes>
|
||||
</fileSet>
|
||||
<fileSet encoding="UTF-8" filtered="false">
|
||||
<directory>src/test/properties</directory>
|
||||
<includes>
|
||||
<include>**/*.properties</include>
|
||||
</includes>
|
||||
</fileSet>
|
||||
</fileSets>
|
||||
</module>
|
||||
|
||||
<module id="${rootArtifactId}-share-jar"
|
||||
name="${rootArtifactId}-share-jar"
|
||||
dir="__rootArtifactId__-share-jar" >
|
||||
<module id="${rootArtifactId}-share"
|
||||
name="${rootArtifactId}-share"
|
||||
dir="__rootArtifactId__-share">
|
||||
<fileSets>
|
||||
<fileSet filtered="false" packaged="false" encoding="UTF-8">
|
||||
<directory>src/main/assembly</directory>
|
||||
<includes>
|
||||
<include>**</include>
|
||||
</includes>
|
||||
</fileSet>
|
||||
<fileSet filtered="true" packaged="true" encoding="UTF-8">
|
||||
<directory>src/main/java</directory>
|
||||
<includes>
|
||||
@@ -102,27 +94,96 @@
|
||||
<exclude>**/__artifactId__-example-widgets.xml</exclude>
|
||||
</excludes>
|
||||
</fileSet>
|
||||
<fileSet filtered="true" packaged="false" encoding="UTF-8">
|
||||
<directory>src/test/resources</directory>
|
||||
</fileSets>
|
||||
</module>
|
||||
|
||||
<module id="${rootArtifactId}-integration-tests"
|
||||
name="${rootArtifactId}-integration-tests"
|
||||
dir="__rootArtifactId__-integration-tests">
|
||||
<fileSets>
|
||||
<fileSet filtered="true" packaged="true" encoding="UTF-8">
|
||||
<directory>src/main/java</directory>
|
||||
<includes>
|
||||
<include>**</include>
|
||||
<include>**/*.java</include>
|
||||
</includes>
|
||||
</fileSet>
|
||||
<fileSet filtered="true" packaged="true" encoding="UTF-8">
|
||||
<directory>src/test/java</directory>
|
||||
<includes>
|
||||
<include>**/*.java</include>
|
||||
</includes>
|
||||
</fileSet>
|
||||
</fileSets>
|
||||
</module>
|
||||
|
||||
<module id="${rootArtifactId}-platform-docker"
|
||||
name="${rootArtifactId}-platform-docker"
|
||||
dir="__rootArtifactId__-platform-docker">
|
||||
<fileSets>
|
||||
<fileSet encoding="UTF-8" filtered="false">
|
||||
<directory>src/main/docker</directory>
|
||||
<includes>
|
||||
<include>license/**</include>
|
||||
<include>Dockerfile</include>
|
||||
<include>disable-webscript-caching-context.xml</include>
|
||||
</includes>
|
||||
<excludes>
|
||||
<exclude>**/*.properties</exclude>
|
||||
</excludes>
|
||||
</fileSet>
|
||||
<fileSet encoding="UTF-8" filtered="true">
|
||||
<directory>src/main/docker</directory>
|
||||
<includes>
|
||||
<include>**/*.properties</include>
|
||||
</includes>
|
||||
<excludes>
|
||||
<exclude>license/**</exclude>
|
||||
<exclude>Dockerfile</exclude>
|
||||
<exclude>disable-webscript-caching-context.xml</exclude>
|
||||
</excludes>
|
||||
</fileSet>
|
||||
</fileSets>
|
||||
</module>
|
||||
|
||||
<module id="${rootArtifactId}-share-docker"
|
||||
name="${rootArtifactId}-share-docker"
|
||||
dir="__rootArtifactId__-share-docker">
|
||||
<fileSets>
|
||||
<fileSet encoding="UTF-8" filtered="false">
|
||||
<directory>src/main/docker</directory>
|
||||
<includes>
|
||||
<include>Dockerfile</include>
|
||||
<include>share-config-custom.xml</include>
|
||||
</includes>
|
||||
<excludes>
|
||||
<exclude>**/*.properties</exclude>
|
||||
</excludes>
|
||||
</fileSet>
|
||||
<fileSet encoding="UTF-8" filtered="true">
|
||||
<directory>src/main/docker</directory>
|
||||
<includes>
|
||||
<include>**/*.properties</include>
|
||||
</includes>
|
||||
<excludes>
|
||||
<exclude>Dockerfile</exclude>
|
||||
<exclude>share-config-custom.xml</exclude>
|
||||
</excludes>
|
||||
</fileSet>
|
||||
</fileSets>
|
||||
</module>
|
||||
</modules>
|
||||
|
||||
<fileSets>
|
||||
<fileSet encoding="UTF-8">
|
||||
<directory>src</directory>
|
||||
<fileSet encoding="UTF-8" filtered="true">
|
||||
<directory>docker</directory>
|
||||
<includes>
|
||||
<include>**</include>
|
||||
</includes>
|
||||
</fileSet>
|
||||
|
||||
<fileSet encoding="UTF-8">
|
||||
<fileSet encoding="UTF-8" filtered="true">
|
||||
<directory></directory>
|
||||
<includes>
|
||||
<include>.gitignore</include>
|
||||
<include>run.sh</include>
|
||||
<include>run.bat</include>
|
||||
<include>README.md</include>
|
||||
|
38
archetypes/alfresco-allinone-archetype/src/main/resources/archetype-resources/.gitignore
vendored
Normal file
38
archetypes/alfresco-allinone-archetype/src/main/resources/archetype-resources/.gitignore
vendored
Normal file
@@ -0,0 +1,38 @@
|
||||
**.log*
|
||||
|
||||
# Maven
|
||||
target/
|
||||
pom.xml.tag
|
||||
pom.xml.releaseBackup
|
||||
pom.xml.versionsBackup
|
||||
pom.xml.next
|
||||
release.properties
|
||||
dependency-reduced-pom.xml
|
||||
buildNumber.properties
|
||||
.mvn/timing.properties
|
||||
.mvn/wrapper/maven-wrapper.jar
|
||||
|
||||
# Eclipse
|
||||
.metadata
|
||||
.project
|
||||
.classpath
|
||||
bin/
|
||||
tmp/
|
||||
*.tmp
|
||||
.settings/
|
||||
.loadpath
|
||||
.recommenders
|
||||
|
||||
# IntelliJ IDEA
|
||||
**.idea
|
||||
**.iml
|
||||
|
||||
# Visual Studio Code
|
||||
.vscode/*
|
||||
!.vscode/settings.json
|
||||
!.vscode/tasks.json
|
||||
!.vscode/launch.json
|
||||
!.vscode/extensions.json
|
||||
|
||||
# macOS
|
||||
*.DS_Store
|
@@ -1,34 +1,46 @@
|
||||
# Alfresco AIO Project - SDK 3
|
||||
# Alfresco AIO Project - SDK 4.7
|
||||
|
||||
This is an All-In-One (AIO) project for Alfresco SDK 3.0.
|
||||
This is an All-In-One (AIO) project for Alfresco SDK 4.7.
|
||||
|
||||
Run with `mvn clean install -DskipTests=true alfresco:run` or `./run.sh` and verify that it
|
||||
Run with `./run.sh build_start` or `./run.bat build_start` and verify that it
|
||||
|
||||
* Runs the embedded Tomcat + H2 DB
|
||||
* Runs Alfresco Platform (Repository)
|
||||
* Runs Alfresco Solr4
|
||||
* Runs Alfresco Content Service (ACS)
|
||||
* Runs Alfresco Share
|
||||
* Packages both as JAR and AMP assembly for modules
|
||||
* Runs Alfresco Search Service (ASS)
|
||||
* Runs PostgreSQL database
|
||||
* Deploys the JAR assembled modules
|
||||
|
||||
All the services of the project are now run as docker containers. The run script offers the next tasks:
|
||||
|
||||
* `build_start`. Build the whole project, recreate the ACS and Share docker images, start the dockerised environment composed by ACS, Share, ASS and
|
||||
PostgreSQL and tail the logs of all the containers.
|
||||
* `build_start_it_supported`. Build the whole project including dependencies required for IT execution, recreate the ACS and Share docker images, start the
|
||||
dockerised environment composed by ACS, Share, ASS and PostgreSQL and tail the logs of all the containers.
|
||||
* `start`. Start the dockerised environment without building the project and tail the logs of all the containers.
|
||||
* `stop`. Stop the dockerised environment.
|
||||
* `purge`. Stop the dockerised container and delete all the persistent data (docker volumes).
|
||||
* `tail`. Tail the logs of all the containers.
|
||||
* `reload_share`. Build the Share module, recreate the Share docker image and restart the Share container.
|
||||
* `reload_acs`. Build the ACS module, recreate the ACS docker image and restart the ACS container.
|
||||
* `build_test`. Build the whole project, recreate the ACS and Share docker images, start the dockerised environment, execute the integration tests from the
|
||||
`integration-tests` module and stop the environment.
|
||||
* `test`. Execute the integration tests (the environment must be already started).
|
||||
|
||||
# Few things to notice
|
||||
|
||||
* No parent pom
|
||||
* No WAR projects, all handled by the Alfresco Maven Plugin
|
||||
* No runner project - it's all in the Alfresco Maven Plugin
|
||||
* No WAR projects, the jars are included in the custom docker images
|
||||
* No runner project - the Alfresco environment is now managed through [Docker](https://www.docker.com/)
|
||||
* Standard JAR packaging and layout
|
||||
* Works seamlessly with Eclipse and IntelliJ IDEA
|
||||
* JRebel for hot reloading, JRebel maven plugin for generating rebel.xml, agent usage: `MAVEN_OPTS=-Xms256m -Xmx1G -agentpath:/home/martin/apps/jrebel/lib/libjrebel64.so`
|
||||
* JRebel for hot reloading, JRebel maven plugin for generating rebel.xml [JRebel integration documentation]
|
||||
* AMP as an assembly
|
||||
* [Configurable Run mojo](https://github.com/Alfresco/alfresco-sdk/blob/sdk-3.0/plugins/alfresco-maven-plugin/src/main/java/org/alfresco/maven/plugin/RunMojo.java) in the `alfresco-maven-plugin`
|
||||
* No unit testing/functional tests just yet
|
||||
* Persistent test data through restart thanks to the use of Docker volumes for ACS, ASS and database data
|
||||
* Integration tests module to execute tests against the final environment (dockerised)
|
||||
* Resources loaded from META-INF
|
||||
* Web Fragment (this includes a sample servlet configured via web fragment)
|
||||
|
||||
|
||||
# TODO
|
||||
|
||||
|
||||
* Abstract assembly into a dependency so we don't have to ship the assembly in the archetype
|
||||
* Purge
|
||||
* Functional/remote unit tests
|
||||
|
||||
|
||||
|
||||
|
@@ -0,0 +1,76 @@
|
||||
<?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>Integration Tests Module</name>
|
||||
<description>Integration Tests module for in-container integration testing - part of AIO - SDK 4.7</description>
|
||||
<packaging>jar</packaging> <!-- Note. this just runs Integration Tests, but it needs to be a JAR otherwise
|
||||
nothing is compiled (i.e. you cannot set it to pom) -->
|
||||
|
||||
<parent>
|
||||
<groupId>${groupId}</groupId>
|
||||
<artifactId>${rootArtifactId}</artifactId>
|
||||
<version>${version}</version>
|
||||
</parent>
|
||||
|
||||
<properties>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<!-- Bring in any custom module that should be tested, by default we bring in the Platform JAR module
|
||||
that is generated for the AIO project -->
|
||||
<dependency>
|
||||
<groupId>${groupId}</groupId>
|
||||
<artifactId>${rootArtifactId}-platform</artifactId>
|
||||
<version>${version}</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<testResources>
|
||||
<testResource>
|
||||
<directory>src/test/resources</directory>
|
||||
<filtering>true</filtering>
|
||||
</testResource>
|
||||
</testResources>
|
||||
|
||||
<plugins>
|
||||
|
||||
<plugin>
|
||||
<groupId>org.zeroturnaround</groupId>
|
||||
<artifactId>jrebel-maven-plugin</artifactId>
|
||||
<configuration>
|
||||
<rebelXmlDirectory>${project.build.testOutputDirectory}</rebelXmlDirectory>
|
||||
</configuration>
|
||||
</plugin>
|
||||
|
||||
<!-- Make sure we attach the tests so we can include them when running -->
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-jar-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<goals>
|
||||
<goal>test-jar</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
|
||||
<!-- Runs the integration tests, any class that follows naming convention
|
||||
"**/IT*.java", "**/*IT.java", and "**/*ITCase.java" will be considered an integration test -->
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-failsafe-plugin</artifactId>
|
||||
<configuration>
|
||||
<systemPropertyVariables>
|
||||
<acs.endpoint.path>${test.acs.endpoint.path}</acs.endpoint.path>
|
||||
</systemPropertyVariables>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
@@ -0,0 +1,191 @@
|
||||
#set($symbol_pound='#')
|
||||
#set($symbol_dollar='$')
|
||||
#set($symbol_escape='\' )
|
||||
/**
|
||||
* Copyright (C) 2017 Alfresco Software Limited.
|
||||
* <p/>
|
||||
* This file is part of the Alfresco SDK project.
|
||||
* <p/>
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
* <p/>
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* <p/>
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package ${package}.platformsample;
|
||||
|
||||
import org.alfresco.model.ContentModel;
|
||||
import org.alfresco.rad.test.AbstractAlfrescoIT;
|
||||
import org.alfresco.rad.test.AlfrescoTestRunner;
|
||||
import org.alfresco.repo.content.MimetypeMap;
|
||||
import org.alfresco.repo.nodelocator.CompanyHomeNodeLocator;
|
||||
import org.alfresco.service.cmr.repository.ChildAssociationRef;
|
||||
import org.alfresco.service.cmr.repository.ContentReader;
|
||||
import org.alfresco.service.cmr.repository.ContentWriter;
|
||||
import org.alfresco.service.cmr.repository.NodeRef;
|
||||
import org.alfresco.service.namespace.NamespaceService;
|
||||
import org.alfresco.service.namespace.QName;
|
||||
import org.apache.commons.io.IOUtils;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.Serializable;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
/**
|
||||
* Integration Test sample for a custom content model.
|
||||
* See {@link DemoComponentIT} for more info.
|
||||
*
|
||||
* @author martin.bergljung@alfresco.com
|
||||
* @since 3.0
|
||||
*/
|
||||
@RunWith(value = AlfrescoTestRunner.class)
|
||||
public class CustomContentModelIT extends AbstractAlfrescoIT {
|
||||
private static final String ACME_MODEL_NS = "{http://www.acme.org/model/content/1.0}";
|
||||
private static final String ACME_MODEL_LOCALNAME = "contentModel";
|
||||
private static final String ACME_DOCUMENT_TYPE = "document";
|
||||
private static final String ACME_SECURITY_CLASSIFIED_ASPECT = "securityClassified";
|
||||
private static final String ACME_DOCUMENT_ID_PROPNAME = "documentId";
|
||||
|
||||
@Test
|
||||
public void testCustomContentModelPresence() {
|
||||
Collection<QName> allContentModels = getServiceRegistry().getDictionaryService().getAllModels();
|
||||
QName customContentModelQName = createQName(ACME_MODEL_LOCALNAME);
|
||||
assertTrue("Custom content model " + customContentModelQName.toString() +
|
||||
" is not present", allContentModels.contains(customContentModelQName));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCreateAcmeDocument() {
|
||||
// Create the ACME Doc file
|
||||
QName type = createQName(ACME_DOCUMENT_TYPE);
|
||||
String textContent = "Hello World!";
|
||||
String documentId = "DOC001";
|
||||
Map<QName, Serializable> nodeProperties = new HashMap<>();
|
||||
nodeProperties.put(createQName(ACME_DOCUMENT_ID_PROPNAME), documentId);
|
||||
nodeProperties.put(createQName("securityClassification"), "Company Confidential");
|
||||
NodeRef nodeRef = createNode("AcmeFile.txt", type, nodeProperties);
|
||||
addFileContent(nodeRef, textContent);
|
||||
|
||||
// Add an Aspect to the file (could be a custom aspect...)
|
||||
Map<QName, Serializable> aspectProperties = new HashMap<>();
|
||||
aspectProperties.put(ContentModel.PROP_TITLE, "Some Doc Title");
|
||||
aspectProperties.put(ContentModel.PROP_DESCRIPTION, "Some Doc Description");
|
||||
getServiceRegistry().getNodeService().addAspect(nodeRef, ContentModel.ASPECT_TITLED, aspectProperties);
|
||||
|
||||
// Assert that the file is created correctly
|
||||
assertEquals("Invalid type", type, getServiceRegistry().getNodeService().getType(nodeRef));
|
||||
assertTrue("Missing security aspect",
|
||||
getServiceRegistry().getNodeService().hasAspect(nodeRef, createQName(ACME_SECURITY_CLASSIFIED_ASPECT)));
|
||||
assertTrue("Missing titled aspect",
|
||||
getServiceRegistry().getNodeService().hasAspect(nodeRef, ContentModel.ASPECT_TITLED));
|
||||
assertEquals("Invalid property value", documentId,
|
||||
getServiceRegistry().getNodeService().getProperty(nodeRef, createQName(ACME_DOCUMENT_ID_PROPNAME)));
|
||||
readTextContent(nodeRef).equals(textContent);
|
||||
|
||||
// Clean up node
|
||||
if (nodeRef != null) {
|
||||
getServiceRegistry().getNodeService().deleteNode(nodeRef);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* ==================== Helper Methods ============================================================================
|
||||
*/
|
||||
|
||||
/**
|
||||
* Create a QName for the ACME content model
|
||||
*
|
||||
* @param localname the local content model name without namespace specified
|
||||
* @return the full ACME QName including namespace
|
||||
*/
|
||||
private QName createQName(String localname) {
|
||||
return QName.createQName(ACME_MODEL_NS + localname);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new node, such as a file or a folder, with passed in type and properties
|
||||
*
|
||||
* @param name the name of the file or folder
|
||||
* @param type the content model type
|
||||
* @param properties the properties from the content model
|
||||
* @return the Node Reference for the newly created node
|
||||
*/
|
||||
private NodeRef createNode(String name, QName type, Map<QName, Serializable> properties) {
|
||||
NodeRef parentFolderNodeRef = getCompanyHomeNodeRef();
|
||||
QName associationType = ContentModel.ASSOC_CONTAINS;
|
||||
QName associationQName = QName.createQName(NamespaceService.CONTENT_MODEL_1_0_URI,
|
||||
QName.createValidLocalName(name));
|
||||
properties.put(ContentModel.PROP_NAME, name);
|
||||
ChildAssociationRef parentChildAssocRef = getServiceRegistry().getNodeService().createNode(
|
||||
parentFolderNodeRef, associationType, associationQName, type, properties);
|
||||
|
||||
return parentChildAssocRef.getChildRef();
|
||||
}
|
||||
|
||||
/**
|
||||
* Add some text content to a file node
|
||||
*
|
||||
* @param nodeRef the node reference for the file that should have some text content added to it
|
||||
* @param fileContent the text content
|
||||
*/
|
||||
private void addFileContent(NodeRef nodeRef, String fileContent) {
|
||||
boolean updateContentPropertyAutomatically = true;
|
||||
ContentWriter writer = getServiceRegistry().getContentService().getWriter(nodeRef, ContentModel.PROP_CONTENT,
|
||||
updateContentPropertyAutomatically);
|
||||
writer.setMimetype(MimetypeMap.MIMETYPE_TEXT_PLAIN);
|
||||
writer.setEncoding("UTF-8");
|
||||
writer.putContent(fileContent);
|
||||
}
|
||||
|
||||
/**
|
||||
* Read text content for passed in file Node Reference
|
||||
*
|
||||
* @param nodeRef the node reference for a file containing text
|
||||
* @return the text content
|
||||
*/
|
||||
private String readTextContent(NodeRef nodeRef) {
|
||||
ContentReader reader = getServiceRegistry().getContentService().getReader(nodeRef, ContentModel.PROP_CONTENT);
|
||||
if (reader == null) {
|
||||
return ""; // Maybe it was a folder after all
|
||||
}
|
||||
|
||||
InputStream is = reader.getContentInputStream();
|
||||
try {
|
||||
return IOUtils.toString(is, "UTF-8");
|
||||
} catch (IOException ioe) {
|
||||
throw new RuntimeException(ioe);
|
||||
} finally {
|
||||
if (is != null) {
|
||||
try {
|
||||
is.close();
|
||||
} catch (Throwable e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the node reference for the /Company Home top folder in Alfresco.
|
||||
* Use the standard node locator service.
|
||||
*
|
||||
* @return the node reference for /Company Home
|
||||
*/
|
||||
private NodeRef getCompanyHomeNodeRef() {
|
||||
return getServiceRegistry().getNodeLocatorService().getNode(CompanyHomeNodeLocator.NAME, null, null);
|
||||
}
|
||||
}
|
@@ -0,0 +1,67 @@
|
||||
#set($symbol_pound='#')
|
||||
#set($symbol_dollar='$')
|
||||
#set($symbol_escape='\' )
|
||||
/**
|
||||
* Copyright (C) 2017 Alfresco Software Limited.
|
||||
* <p/>
|
||||
* This file is part of the Alfresco SDK project.
|
||||
* <p/>
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
* <p/>
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* <p/>
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package ${package}.platformsample;
|
||||
|
||||
import org.alfresco.rad.test.AbstractAlfrescoIT;
|
||||
import org.alfresco.rad.test.AlfrescoTestRunner;
|
||||
import org.alfresco.rad.test.Remote;
|
||||
import org.alfresco.model.ContentModel;
|
||||
import org.alfresco.service.cmr.repository.NodeRef;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
|
||||
/**
|
||||
* Integration Test of the DemoComponent using the Alfresco Test Runner.
|
||||
* The Alfresco Test Runner (i.e. AlfrescoTestRunner.class) will check if it is running in an Alfresco instance,
|
||||
* if so it will execute normally locally. On the other hand, if it detects no
|
||||
* Alfresco Spring context, then it will make a call to a custom Web Script that
|
||||
* will execute this test in the running container remotely. The remote location is
|
||||
* determined by the @Remote config.
|
||||
*
|
||||
* @author martin.bergljung@alfresco.com
|
||||
* @since 3.0
|
||||
*/
|
||||
@RunWith(value = AlfrescoTestRunner.class)
|
||||
public class DemoComponentIT extends AbstractAlfrescoIT {
|
||||
|
||||
@Test
|
||||
public void testGetCompanyHome() {
|
||||
DemoComponent demoComponent = (DemoComponent) getApplicationContext().getBean("${package}.DemoComponent");
|
||||
NodeRef companyHome = demoComponent.getCompanyHome();
|
||||
assertNotNull(companyHome);
|
||||
String companyHomePath = getServiceRegistry().getNodeService().getPath(companyHome).toPrefixString(getServiceRegistry().getNamespaceService());
|
||||
assertNotNull(companyHomePath);
|
||||
assertEquals("/app:company_home", companyHomePath);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testChildNodesCount() {
|
||||
DemoComponent demoComponent = (DemoComponent) getApplicationContext().getBean("${package}.DemoComponent");
|
||||
NodeRef companyHome = demoComponent.getCompanyHome();
|
||||
int childNodeCount = demoComponent.childNodesCount(companyHome);
|
||||
assertNotNull(childNodeCount);
|
||||
// There are 7 folders by default under Company Home
|
||||
assertEquals(7, childNodeCount);
|
||||
}
|
||||
}
|
@@ -0,0 +1,85 @@
|
||||
#set($symbol_pound='#')
|
||||
#set($symbol_dollar='$')
|
||||
#set($symbol_escape='\' )
|
||||
/**
|
||||
* Copyright (C) 2017 Alfresco Software Limited.
|
||||
* <p/>
|
||||
* This file is part of the Alfresco SDK project.
|
||||
* <p/>
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
* <p/>
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* <p/>
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package ${package}.platformsample;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.http.HttpEntity;
|
||||
import org.apache.http.HttpResponse;
|
||||
import org.apache.http.HttpStatus;
|
||||
import org.apache.http.auth.AuthScope;
|
||||
import org.apache.http.auth.UsernamePasswordCredentials;
|
||||
import org.apache.http.client.CredentialsProvider;
|
||||
import org.apache.http.client.methods.HttpGet;
|
||||
import org.apache.http.impl.client.BasicCredentialsProvider;
|
||||
import org.apache.http.impl.client.CloseableHttpClient;
|
||||
import org.apache.http.impl.client.HttpClientBuilder;
|
||||
import org.apache.http.util.EntityUtils;
|
||||
import org.junit.Test;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
|
||||
/**
|
||||
* Integration Test (IT) for Hello World web script.
|
||||
*
|
||||
* @author martin.bergljung@alfresco.com
|
||||
* @version 1.0
|
||||
* @since 3.0
|
||||
*/
|
||||
public class HelloWorldWebScriptIT {
|
||||
|
||||
private static final String ACS_ENDPOINT_PROP = "acs.endpoint.path";
|
||||
private static final String ACS_DEFAULT_ENDPOINT = "http://localhost:8080/alfresco";
|
||||
|
||||
@Test
|
||||
public void testWebScriptCall() throws Exception {
|
||||
String webscriptURL = getPlatformEndpoint() + "/service/sample/helloworld";
|
||||
String expectedResponse = "Message: 'Hello from JS!' 'HelloFromJava'";
|
||||
|
||||
// Login credentials for Alfresco Repo
|
||||
CredentialsProvider provider = new BasicCredentialsProvider();
|
||||
UsernamePasswordCredentials credentials = new UsernamePasswordCredentials("admin", "admin");
|
||||
provider.setCredentials(AuthScope.ANY, credentials);
|
||||
|
||||
// Create HTTP Client with credentials
|
||||
CloseableHttpClient httpclient = HttpClientBuilder.create()
|
||||
.setDefaultCredentialsProvider(provider)
|
||||
.build();
|
||||
|
||||
// Execute Web Script call
|
||||
try {
|
||||
HttpGet httpget = new HttpGet(webscriptURL);
|
||||
HttpResponse httpResponse = httpclient.execute(httpget);
|
||||
assertEquals("Incorrect HTTP Response Status",
|
||||
HttpStatus.SC_OK, httpResponse.getStatusLine().getStatusCode());
|
||||
HttpEntity entity = httpResponse.getEntity();
|
||||
assertNotNull("Response from Web Script is null", entity);
|
||||
assertEquals("Incorrect Web Script Response", expectedResponse, EntityUtils.toString(entity));
|
||||
} finally {
|
||||
httpclient.close();
|
||||
}
|
||||
}
|
||||
|
||||
private String getPlatformEndpoint() {
|
||||
final String platformEndpoint = System.getProperty(ACS_ENDPOINT_PROP);
|
||||
return StringUtils.isNotBlank(platformEndpoint) ? platformEndpoint : ACS_DEFAULT_ENDPOINT;
|
||||
}
|
||||
}
|
@@ -0,0 +1,130 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
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 Platform/Repository Docker Module</name>
|
||||
<description>Platform/Repo Docker Module to generate the final Docker image</description>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<parent>
|
||||
<groupId>${groupId}</groupId>
|
||||
<artifactId>${rootArtifactId}</artifactId>
|
||||
<version>${version}</version>
|
||||
</parent>
|
||||
|
||||
<properties>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>${groupId}</groupId>
|
||||
<artifactId>${rootArtifactId}-platform</artifactId>
|
||||
<version>${version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>${groupId}</groupId>
|
||||
<artifactId>${rootArtifactId}-integration-tests</artifactId>
|
||||
<version>${version}</version>
|
||||
<scope>test</scope>
|
||||
<classifier>tests</classifier>
|
||||
</dependency>
|
||||
<!-- Add any additional AMPs or extension JARs here that you want to be deployed in Alfresco -->
|
||||
<!-- IMPORTANT:
|
||||
If using amp extensions only, add <includeTypes>amp</includeTypes> to the "collect-extensions" execution below.
|
||||
If using both amp and jar extensions, you have to add:
|
||||
<exclusions>
|
||||
<exclusion>
|
||||
<groupId>*</groupId>
|
||||
<artifactId>*</artifactId>
|
||||
</exclusion>
|
||||
</exclusions>
|
||||
to each amp dependency definition.
|
||||
-->
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-dependency-plugin</artifactId>
|
||||
<executions>
|
||||
<!-- Copy the repository extension and the dependencies required for execute integration tests -->
|
||||
<execution>
|
||||
<id>collect-test-artifacts</id>
|
||||
<phase>pre-integration-test</phase>
|
||||
<goals>
|
||||
<goal>copy-dependencies</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<outputDirectory>${project.build.directory}/extensions</outputDirectory>
|
||||
<excludeScope>compile</excludeScope>
|
||||
</configuration>
|
||||
</execution>
|
||||
<!-- Collect extensions (JARs or AMPs) declared in this module do be deployed to docker -->
|
||||
<execution>
|
||||
<id>collect-extensions</id>
|
||||
<phase>package</phase>
|
||||
<goals>
|
||||
<goal>copy-dependencies</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<outputDirectory>${project.build.directory}/extensions</outputDirectory>
|
||||
<includeScope>runtime</includeScope>
|
||||
<!-- IMPORTANT: if using amp dependencies only, add <includeTypes>amp</includeTypes> -->
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<!-- Filter the Dockerfile and the other files added to the container to be able to replace maven properties -->
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-resources-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>copy-and-filter-docker-resources</id>
|
||||
<phase>validate</phase>
|
||||
<goals>
|
||||
<goal>copy-resources</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<outputDirectory>${project.build.directory}</outputDirectory>
|
||||
<resources>
|
||||
<resource>
|
||||
<directory>src/main/docker</directory>
|
||||
<filtering>true</filtering>
|
||||
<excludes>
|
||||
<exclude>**/*.jar</exclude>
|
||||
<exclude>**/*.so</exclude>
|
||||
<exclude>**/*.gz</exclude>
|
||||
</excludes>
|
||||
</resource>
|
||||
</resources>
|
||||
</configuration>
|
||||
</execution>
|
||||
<execution>
|
||||
<id>copy-and-filter-docker-resources-non-filtered</id>
|
||||
<phase>validate</phase>
|
||||
<goals>
|
||||
<goal>copy-resources</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<outputDirectory>${project.build.directory}</outputDirectory>
|
||||
<resources>
|
||||
<resource>
|
||||
<directory>src/main/docker</directory>
|
||||
<filtering>false</filtering>
|
||||
<includes>
|
||||
<include>**/*.jar</include>
|
||||
<include>**/*.so</include>
|
||||
<include>**/*.gz</include>
|
||||
</includes>
|
||||
</resource>
|
||||
</resources>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
@@ -0,0 +1,23 @@
|
||||
FROM ${docker.acs.image}:${alfresco.platform.version}
|
||||
|
||||
ARG TOMCAT_DIR=/usr/local/tomcat
|
||||
ARG USERNAME=${alfresco.platform.docker.user}
|
||||
|
||||
USER root
|
||||
|
||||
# Copy Dockerfile to avoid an error if no JARs exist
|
||||
COPY Dockerfile extensions/*.jar $TOMCAT_DIR/webapps/alfresco/WEB-INF/lib/
|
||||
|
||||
# Copy Dockerfile to avoid an error if no AMPs exist
|
||||
COPY Dockerfile extensions/*.amp $TOMCAT_DIR/amps/
|
||||
RUN java -jar $TOMCAT_DIR/alfresco-mmt/alfresco-mmt*.jar install \
|
||||
$TOMCAT_DIR/amps $TOMCAT_DIR/webapps/alfresco -directory -nobackup -force
|
||||
|
||||
COPY alfresco-global.properties $TOMCAT_DIR/shared/classes/alfresco-global.properties
|
||||
COPY dev-log4j.properties $TOMCAT_DIR/shared/classes/alfresco/extension
|
||||
COPY disable-webscript-caching-context.xml $TOMCAT_DIR/shared/classes/alfresco/extension
|
||||
|
||||
# Copy Dockerfile to avoid an error if no license file exists
|
||||
COPY Dockerfile license/*.* $TOMCAT_DIR/webapps/alfresco/WEB-INF/classes/alfresco/extension/license/
|
||||
|
||||
USER ${USERNAME}
|
@@ -1,3 +1,6 @@
|
||||
#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.
|
||||
@@ -15,15 +18,12 @@
|
||||
# RUN TIME PROPERTIES
|
||||
# -------------------
|
||||
|
||||
########################################################################################################################
|
||||
# Alfresco configuration for running locally
|
||||
#
|
||||
# Alfresco configuration for running locally with PostgreSQL Database
|
||||
#
|
||||
# Configuration when running Tomcat embedded from Maven.
|
||||
# This will create the alf_data_dev directory relative to Tomcat run folder.
|
||||
# Property values from the POM but it can also be edited here.
|
||||
########################################################################################################################
|
||||
|
||||
dir.root=${alfresco.data.location}
|
||||
#
|
||||
|
||||
# Alfresco Repo Webapp (alfresco.war) context, ports etc
|
||||
alfresco.context=alfresco
|
||||
@@ -34,19 +34,11 @@ alfresco.protocol=http
|
||||
# Alfresco Share Webapp (share.war) context, ports etc
|
||||
share.context=share
|
||||
share.host=localhost
|
||||
share.port=8080
|
||||
share.port=8180
|
||||
share.protocol=http
|
||||
|
||||
index.subsystem.name=solr4
|
||||
solr.host=localhost
|
||||
solr.port=8080
|
||||
solr.secureComms=none
|
||||
|
||||
# Don't try and recover any index
|
||||
index.recovery.mode=NONE
|
||||
# As we run embedded, we set Lucene
|
||||
# TODO: Find a better solution for indexing, as buildonly (embedded Lucene) is deprecated and going to be removed soon
|
||||
#index.subsystem.name=buildonly
|
||||
|
||||
# These jobs seem to require Lucene (Unsupported Operation with Solr) so we disable them / set to future date
|
||||
# See https://forums.alfresco.com/en/viewtopic.php?f=52&t=41597
|
||||
@@ -58,16 +50,39 @@ wcmqs.publishQueueProcessor.schedule=0 50 2 * * ? 2060
|
||||
# Fail or not when there are node integrity checker errors
|
||||
integrity.failOnError=true
|
||||
|
||||
# Database connection properties
|
||||
db.driver=${alfresco.db.datasource.class}
|
||||
db.url=${alfresco.db.url}
|
||||
db.username=${alfresco.db.username}
|
||||
db.password=${alfresco.db.password}
|
||||
# Alfresco Repository PostgreSQL Database configuration.
|
||||
# The PostgreSQL Driver is brought in via the tomcat7-maven-plugin as a dependency.
|
||||
db.driver=org.postgresql.Driver
|
||||
|
||||
# This Alfresco Platform Configuration file should be used for custom properties that are introduced by this module.
|
||||
# Define default values for all properties here.
|
||||
# System Administrators can override these values in environment specific configurations in
|
||||
# alfresco/tomcat/shared/classes/alfresco-global.properties.
|
||||
#
|
||||
index.subsystem.name=solr6
|
||||
solr.host=${rootArtifactId}-ass
|
||||
solr.port=8983
|
||||
solr.secureComms=secret
|
||||
solr.sharedSecret=secret
|
||||
|
||||
db.username=alfresco
|
||||
db.password=alfresco
|
||||
db.pool.initial=10
|
||||
db.pool.max=100
|
||||
hibernate.dialect=org.hibernate.dialect.H2Dialect
|
||||
|
||||
db.url=jdbc:postgresql://${rootArtifactId}-postgres:5432/alfresco
|
||||
|
||||
# File servers related properties
|
||||
# For local runs we disable CIFS and FTP
|
||||
cifs.enabled=false
|
||||
ftp.enabled=false
|
||||
ftp.enabled=false
|
||||
|
||||
csrf.filter.enabled=false
|
||||
|
||||
# Embedded broker without persistence
|
||||
messaging.broker.url=vm://localhost?broker.persistent=false
|
||||
|
||||
# Disable ATS
|
||||
transform.service.enabled=false
|
||||
local.transform.service.enabled=false
|
||||
legacy.transform.service.enabled=false
|
@@ -1,7 +1,9 @@
|
||||
#set( $symbol_pound = '#' )
|
||||
#set( $symbol_dollar = '$' )
|
||||
#set( $symbol_escape = '\' )
|
||||
# Set root logger level to error
|
||||
log4j.rootLogger=error, Console, File
|
||||
|
||||
###### Console appender definition #######
|
||||
|
||||
# All outputs currently set to be a ConsoleAppender.
|
||||
log4j.appender.Console=org.apache.log4j.ConsoleAppender
|
||||
@@ -11,21 +13,18 @@ log4j.appender.Console.layout=org.apache.log4j.PatternLayout
|
||||
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=alfresco.log
|
||||
log4j.appender.File.File=logs/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{yyyy-MM-dd} %d{ABSOLUTE} %-5p [%c] [%t] %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
|
||||
@@ -61,8 +60,7 @@ 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
|
||||
# log prepared statement cache activity log4j.logger.org.hibernate.ps.PreparedStatementCache=info
|
||||
|
||||
# Alfresco
|
||||
log4j.logger.org.alfresco=error
|
||||
@@ -212,7 +210,6 @@ 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
|
||||
@@ -261,4 +258,13 @@ log4j.logger.org.alfresco.repo.usage.RepoUsageMonitor=info
|
||||
|
||||
# Authorization
|
||||
log4j.logger.org.alfresco.enterprise.repo.authorization.AuthorizationService=info
|
||||
log4j.logger.org.alfresco.enterprise.repo.authorization.AuthorizationsConsistencyMonitor=warn
|
||||
log4j.logger.org.alfresco.enterprise.repo.authorization.AuthorizationsConsistencyMonitor=warn
|
||||
|
||||
#-----------------------------------------------------------------------
|
||||
# Platform module logging
|
||||
#-----------------------------------------------------------------------
|
||||
log4j.logger.${package}.platformsample.DemoComponent=debug
|
||||
log4j.logger.${package}.platformsample.HelloWorldWebScript=debug
|
||||
|
||||
|
||||
|
@@ -0,0 +1,51 @@
|
||||
#set( $symbol_pound = '#' )
|
||||
#set( $symbol_dollar = '$' )
|
||||
#set( $symbol_escape = '\' )
|
||||
# Enable hotswap so that changes in this module will be automatically reloaded
|
||||
# Watch for changed class files on watchResources path and reload class definition in the running application.
|
||||
autoHotswap=true
|
||||
#autoHotswap.port=8000
|
||||
|
||||
# Add a directory prior to application classpath (load classes and resources).
|
||||
#
|
||||
# This may be useful for example in multi module maven project to load class changes from upstream project
|
||||
# classes. Set extraClasspath to upstream project compiler output and .class file will have precedence to
|
||||
# classes from built JAR file.
|
||||
# i.e. monitor /target/classes
|
||||
# should work with extraClasspath=${project.build.outputDirectory}
|
||||
# If not try
|
||||
extraClasspath=/usr/local/tomcat/hotswap-agent
|
||||
|
||||
# Comma separated list of disabled plugins
|
||||
# Use plugin name - e.g.
|
||||
# Hotswapper, AnonymousClassPatch, WatchResources, Hibernate, Spring, Jersey2, Jetty, Tomcat,
|
||||
# ZK, Logback, JSF, Seam, ELResolver, OsgiEquinox, Proxy, WebObjects, Weld, JBossModules, Resteasy, Gae
|
||||
disabledPlugins=Hibernate,Spring
|
||||
|
||||
# Add a directory prior to webapp path (load webapp resources).
|
||||
#
|
||||
# Load web application resources (such as HTML, JSP, CSS, ...) from this directory prior to default processing.
|
||||
# Use this setting to set to serve resources from source directory directly (e.g. src/main/webapp).
|
||||
extraWebappContext=/usr/local/tomcat/hotswap-agent/${rootArtifactId}-platform/target/classes/META-INF/resources;
|
||||
|
||||
# Load static web resources from different directory.
|
||||
#
|
||||
# This setting is dependent on application server plugin(Jetty, Tomcat, JBoss, ...)
|
||||
webappDir=/usr/local/tomcat/hotswap-agent/${rootArtifactId}-platform/target/classes/META-INF/resources;
|
||||
|
||||
# Watch for changes in a directory (resources only).
|
||||
#
|
||||
# Similar to extraClasspath this property adds classpath when searching for resources (not classes).
|
||||
# While extra classpath just modifies the classloader, this setting does nothing until the resource
|
||||
# is really changed.
|
||||
#
|
||||
# Sometimes it is not possible to point extraClasspath to your i.e. src/main/resources, because there are multiple
|
||||
# replacements of resources in a building step (maven filtering resource option).
|
||||
# This setting will leave i.e. src/target/classes as default source for resources, but after the resource is modified
|
||||
# in src/main/resources, the new changed resource is served instead.
|
||||
# watchResources=
|
||||
|
||||
LOGGER.org.hotswap.agent=DEBUG
|
||||
#LOGGER.org.hotswap.agent.plugin=TRACE
|
||||
#LOGGER.org.hotswap.agent.watch=TRACE
|
||||
#LOGGER.org.hotswap.agent.command=TRACE
|
@@ -0,0 +1,6 @@
|
||||
# Enterprise License location
|
||||
|
||||
Put the Alfresco Enterprise license file in this directory.
|
||||
It will then be copied into the ACS container in the
|
||||
$TOMCAT_DIR/WEB-INF/classes/alfresco/extension/license directory.
|
||||
|
@@ -1,27 +0,0 @@
|
||||
<assembly
|
||||
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3 http://maven.apache.org/xsd/assembly-1.1.3.xsd">
|
||||
|
||||
<id>build-amp-file</id>
|
||||
|
||||
<formats>
|
||||
<format>amp</format>
|
||||
</formats>
|
||||
|
||||
<includeBaseDirectory>false</includeBaseDirectory>
|
||||
|
||||
<files>
|
||||
<file>
|
||||
<source>src/main/resources/alfresco/module/${project.artifactId}/module.properties</source>
|
||||
<filtered>true</filtered>
|
||||
</file>
|
||||
</files>
|
||||
|
||||
<dependencySets>
|
||||
<dependencySet>
|
||||
<outputDirectory>lib</outputDirectory>
|
||||
</dependencySet>
|
||||
</dependencySets>
|
||||
|
||||
</assembly>
|
@@ -1,18 +0,0 @@
|
||||
#set( $symbol_pound = '#' )
|
||||
#set( $symbol_dollar = '$' )
|
||||
#set( $symbol_escape = '\' )
|
||||
package ${package}.platformsample;
|
||||
|
||||
/**
|
||||
* This class does nothing except dump some output to <i>system.out</i>.
|
||||
* This is a sample taken from Maven Alfresco SDK
|
||||
*
|
||||
* @author Derek Hulley
|
||||
*/
|
||||
public class Demo
|
||||
{
|
||||
public void init()
|
||||
{
|
||||
System.out.println("Platform JAR Module class has been loaded");
|
||||
}
|
||||
}
|
@@ -1,43 +0,0 @@
|
||||
#set($symbol_pound='#')
|
||||
#set($symbol_dollar='$')
|
||||
#set($symbol_escape='\' )
|
||||
/*
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
(the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
package ${package}.platformsample;
|
||||
|
||||
import org.springframework.extensions.webscripts.Cache;
|
||||
import org.springframework.extensions.webscripts.DeclarativeWebScript;
|
||||
import org.springframework.extensions.webscripts.Status;
|
||||
import org.springframework.extensions.webscripts.WebScriptRequest;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* A demonstration Java controller for the Hello World Web Script.
|
||||
*
|
||||
* @author martin.bergljung@alfresco.com
|
||||
* @since 2.1.0
|
||||
*/
|
||||
public class HelloWorldWebScript extends DeclarativeWebScript {
|
||||
protected Map<String, Object> executeImpl(
|
||||
WebScriptRequest req, Status status, Cache cache) {
|
||||
Map<String, Object> model = new HashMap<String, Object>();
|
||||
model.put("fromJava", "HelloFromJava");
|
||||
return model;
|
||||
}
|
||||
}
|
@@ -1,42 +0,0 @@
|
||||
#set( $symbol_pound = '#' )
|
||||
#set( $symbol_dollar = '$' )
|
||||
#set( $symbol_escape = '\' )
|
||||
<?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="${package}.exampleBean" class="${package}.platformsample.Demo" init-method="init" />
|
||||
|
||||
<!-- A simple module component that will be executed once.
|
||||
Note. this module component will only be executed once, and then there will be an entry for it in the Repo.
|
||||
So doing for example $ mvn clean install -Prun twice will only execute this component the first time.
|
||||
You need to remove /alf_data_dev for it to be executed again. -->
|
||||
<bean id="${package}.exampleComponent" class="${package}.platformsample.DemoComponent" parent="module.baseComponent" >
|
||||
<property name="moduleId" value="${artifactId}" /> <!-- See module.properties -->
|
||||
<property name="name" value="exampleComponent" />
|
||||
<property name="description" value="A demonstration component" />
|
||||
<property name="sinceVersion" value="1.0" />
|
||||
<property name="appliesFromVersion" value="1.0" />
|
||||
<property name="nodeService" ref="NodeService" />
|
||||
<property name="nodeLocatorService" ref="nodeLocatorService" />
|
||||
</bean>
|
||||
|
||||
|
||||
</beans>
|
@@ -1,43 +0,0 @@
|
||||
#set( $symbol_pound = '#' )
|
||||
#set( $symbol_dollar = '$' )
|
||||
#set( $symbol_escape = '\' )
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed with
|
||||
# this work for additional information regarding copyright ownership.
|
||||
# The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
# (the "License"); you may not use this file except in compliance with
|
||||
# the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#-----------------------------------------------------------------------
|
||||
# ${artifactId} module log4j.properties
|
||||
#
|
||||
# NOTE
|
||||
# ----
|
||||
# Log4j uses the following logging levels:
|
||||
# debug,info,warn,error,fatal
|
||||
#
|
||||
# To set the logging level of {fullClassName} to {loglevel},
|
||||
# add a line to this file of the following form:
|
||||
#
|
||||
# log4j.logger.{fullClassName}={loglevel}
|
||||
#
|
||||
# For example, to make 'com.example.MyExample' produce 'debug'
|
||||
# logs, add a line like this:
|
||||
#
|
||||
# log4j.logger.com.example.MyExample=debug
|
||||
#
|
||||
#
|
||||
# WARNING
|
||||
# -------
|
||||
# Log properties in this log4j.properties file override/augment
|
||||
# those in the webapp's main log4j.properties.
|
||||
#
|
||||
#-----------------------------------------------------------------------
|
||||
log4j.logger.${package}.platformsample.DemoComponent=debug
|
@@ -1,21 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:activiti="http://activiti.org/bpmn"
|
||||
xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC"
|
||||
xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema"
|
||||
expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.activiti.org/test">
|
||||
|
||||
<process id="my-process">
|
||||
|
||||
<startEvent id="start" />
|
||||
<sequenceFlow id="flow1" sourceRef="start" targetRef="someTask" />
|
||||
|
||||
<userTask id="someTask" name="Activiti is awesome!" />
|
||||
<sequenceFlow id="flow2" sourceRef="someTask" targetRef="end" />
|
||||
|
||||
<endEvent id="end" />
|
||||
|
||||
</process>
|
||||
|
||||
</definitions>
|
@@ -3,8 +3,7 @@
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<artifactId>${artifactId}</artifactId>
|
||||
<name>Alfresco Platform/Repository JAR Module</name>
|
||||
<description>Platform/Repo JAR Module (to be included in the alfresco.war) - part of AIO - SDK 3
|
||||
</description>
|
||||
<description>Platform/Repo JAR Module (to be included in the alfresco.war) - part of AIO - SDK 4.7</description>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<parent>
|
||||
@@ -17,13 +16,6 @@
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<!-- The main Alfresco Repo dependency for compiling Java code in src/main/java -->
|
||||
<dependency>
|
||||
<groupId>${alfresco.groupId}</groupId>
|
||||
<artifactId>alfresco-repository</artifactId>
|
||||
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
<build>
|
@@ -0,0 +1,66 @@
|
||||
<assembly
|
||||
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3 http://maven.apache.org/xsd/assembly-1.1.3.xsd">
|
||||
|
||||
<!--
|
||||
Note that the Module dependency specified in the configuration section for the Alfresco Maven Plugin
|
||||
needs to be set to amp if any 3rd party libs should be applied by MMT:
|
||||
`
|
||||
<platformModules>
|
||||
<moduleDependency>
|
||||
<groupId>${project.groupId}</groupId>
|
||||
<artifactId>some-platform</artifactId>
|
||||
<version>${project.version}</version>
|
||||
<type>amp</type>
|
||||
</moduleDependency>
|
||||
-->
|
||||
|
||||
<id>build-amp-file</id>
|
||||
|
||||
<formats>
|
||||
<format>amp</format>
|
||||
</formats>
|
||||
|
||||
<includeBaseDirectory>false</includeBaseDirectory>
|
||||
|
||||
<files>
|
||||
<!-- Filter module.properties and put at top level in the AMP -->
|
||||
<file>
|
||||
<source>src/main/resources/alfresco/module/${project.artifactId}/module.properties</source>
|
||||
<filtered>true</filtered>
|
||||
</file>
|
||||
<!-- Include AMP -> WAR mapping file (needed for custom mappings) -->
|
||||
<file>
|
||||
<source>src/main/assembly/file-mapping.properties</source>
|
||||
<filtered>false</filtered>
|
||||
</file>
|
||||
<!-- Add module-specific log4j.properties configuration at top level in the AMP -->
|
||||
<file>
|
||||
<source>src/main/resources/alfresco/module/${project.artifactId}/log4j.properties</source>
|
||||
<filtered>false</filtered>
|
||||
</file>
|
||||
</files>
|
||||
|
||||
<fileSets>
|
||||
<!-- Anything in the assembly/web directory will end up in the /web directory in the AMP -->
|
||||
<fileSet>
|
||||
<directory>src/main/assembly/web</directory>
|
||||
<outputDirectory>web</outputDirectory>
|
||||
<filtered>true</filtered> <!-- Will filter files and substitute POM props such as for example ${project.name} -->
|
||||
<excludes>
|
||||
<exclude>README.md</exclude>
|
||||
</excludes>
|
||||
</fileSet>
|
||||
</fileSets>
|
||||
|
||||
<!-- Include the project artifact (JAR) in the /lib directory in the AMP, and any 3rd party libraries (JARs)
|
||||
used by the customization.
|
||||
-->
|
||||
<dependencySets>
|
||||
<dependencySet>
|
||||
<outputDirectory>lib</outputDirectory>
|
||||
</dependencySet>
|
||||
</dependencySets>
|
||||
|
||||
</assembly>
|
@@ -0,0 +1,27 @@
|
||||
# Custom AMP to WAR location mappings
|
||||
|
||||
#
|
||||
# The following property can be used to include the standard set of mappings.
|
||||
# The contents of this file will override any defaults. The default is
|
||||
# 'true', i.e. the default mappings will be augmented or modified by values in
|
||||
# this file.
|
||||
#
|
||||
# Default mappings are:
|
||||
#
|
||||
# /config=/WEB-INF/classes
|
||||
# /lib=/WEB-INF/lib
|
||||
# /licenses=/WEB-INF/licenses
|
||||
# /web/jsp=/jsp
|
||||
# /web/css=/css
|
||||
# /web/images=/images
|
||||
# /web/scripts=/scripts
|
||||
# /web/php=/php
|
||||
#
|
||||
include.default=true
|
||||
|
||||
#
|
||||
# Custom mappings. If 'include.default' is false, then this is the complete set.
|
||||
# Map /web to / in AMP so we can override things like favicon.ico
|
||||
#
|
||||
/web=/
|
||||
|
@@ -0,0 +1,22 @@
|
||||
# Web resources that should override out-of-the-box files
|
||||
|
||||
Put here any web resources that should override out-of-the-box
|
||||
web resources, such as favicon.ico. They will then end up in the
|
||||
*/web* directory in the AMP, and applied to the WAR, and override
|
||||
any existing web resources in the Alfresco.WAR.
|
||||
|
||||
**Note**. Module dependency needs to be set to amp for the web resources to be applied by MMT:
|
||||
|
||||
`
|
||||
<moduleDependency>
|
||||
<groupId>${project.groupId}</groupId>
|
||||
<artifactId>some-platform</artifactId>
|
||||
<version>${project.version}</version>
|
||||
<type>amp</type>
|
||||
</moduleDependency>
|
||||
`
|
||||
|
||||
**Important**. New web resources should not be located here, but instead
|
||||
in the usual place in the *src/main/resources/META-INF/resources* directory.
|
||||
|
||||
|
@@ -0,0 +1,35 @@
|
||||
#set( $symbol_pound = '#' )
|
||||
#set( $symbol_dollar = '$' )
|
||||
#set( $symbol_escape = '\' )
|
||||
/**
|
||||
* Copyright (C) 2017 Alfresco Software Limited.
|
||||
* <p/>
|
||||
* This file is part of the Alfresco SDK project.
|
||||
* <p/>
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
* <p/>
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* <p/>
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package ${package}.platformsample;
|
||||
|
||||
/**
|
||||
* This class does nothing except dump some output to <i>system.out</i>.
|
||||
* This is a sample taken from Maven Alfresco SDK
|
||||
*
|
||||
* @author Derek Hulley
|
||||
*/
|
||||
public class Demo
|
||||
{
|
||||
public void init()
|
||||
{
|
||||
System.out.println("Platform JAR Module class has been loaded");
|
||||
}
|
||||
}
|
@@ -1,22 +1,23 @@
|
||||
#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.
|
||||
*/
|
||||
/**
|
||||
* Copyright (C) 2017 Alfresco Software Limited.
|
||||
* <p/>
|
||||
* This file is part of the Alfresco SDK project.
|
||||
* <p/>
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
* <p/>
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* <p/>
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package ${package}.platformsample;
|
||||
|
||||
import org.alfresco.repo.module.AbstractModuleComponent;
|
||||
@@ -35,7 +36,7 @@ import org.apache.commons.logging.LogFactory;
|
||||
* @author Maurizio Pillitu
|
||||
*/
|
||||
public class DemoComponent extends AbstractModuleComponent {
|
||||
Log log = LogFactory.getLog(DemoComponent.class);
|
||||
private static Log logger = LogFactory.getLog(DemoComponent.class);
|
||||
|
||||
private NodeService nodeService;
|
||||
|
||||
@@ -55,8 +56,8 @@ public class DemoComponent extends AbstractModuleComponent {
|
||||
@Override
|
||||
protected void executeInternal() throws Throwable {
|
||||
System.out.println("DemoComponent has been executed");
|
||||
log.debug("Test debug logging. Congratulation your JAR Module is working");
|
||||
log.info("This is only for information purposed. Better remove me from the log in Production");
|
||||
logger.debug("Test debug logging. Congratulation your JAR Module is working");
|
||||
logger.info("This is only for information purposes. Better remove me from the log in Production");
|
||||
}
|
||||
|
||||
/**
|
@@ -0,0 +1,51 @@
|
||||
#set($symbol_pound='#')
|
||||
#set($symbol_dollar='$')
|
||||
#set($symbol_escape='\' )
|
||||
/**
|
||||
* Copyright (C) 2017 Alfresco Software Limited.
|
||||
* <p/>
|
||||
* This file is part of the Alfresco SDK project.
|
||||
* <p/>
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
* <p/>
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* <p/>
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package ${package}.platformsample;
|
||||
|
||||
import org.springframework.extensions.webscripts.Cache;
|
||||
import org.springframework.extensions.webscripts.DeclarativeWebScript;
|
||||
import org.springframework.extensions.webscripts.Status;
|
||||
import org.springframework.extensions.webscripts.WebScriptRequest;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* A demonstration Java controller for the Hello World Web Script.
|
||||
*
|
||||
* @author martin.bergljung@alfresco.com
|
||||
* @since 2.1.0
|
||||
*/
|
||||
public class HelloWorldWebScript extends DeclarativeWebScript {
|
||||
private static Log logger = LogFactory.getLog(HelloWorldWebScript.class);
|
||||
|
||||
protected Map<String, Object> executeImpl(
|
||||
WebScriptRequest req, Status status, Cache cache) {
|
||||
Map<String, Object> model = new HashMap<String, Object>();
|
||||
model.put("fromJava", "HelloFromJava");
|
||||
|
||||
logger.debug("Your 'Hello World' Web Script was called!");
|
||||
|
||||
return model;
|
||||
}
|
||||
}
|
@@ -5,13 +5,13 @@
|
||||
<beans xmlns="http://www.springframework.org/schema/beans"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://www.springframework.org/schema/beans
|
||||
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
|
||||
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
|
||||
|
||||
<!-- The bootstrap-context.xml file is used for patch definitions, importers,
|
||||
workflow, and loading custom content models. -->
|
||||
|
||||
<!-- Registration of new models -->
|
||||
<bean id="${package}.dictionaryBootstrap" parent="dictionaryModelBootstrap" depends-on="dictionaryBootstrap">
|
||||
<bean id="${artifactId}.dictionaryBootstrap" parent="dictionaryModelBootstrap" depends-on="dictionaryBootstrap">
|
||||
<property name="models">
|
||||
<list>
|
||||
<value>alfresco/module/${project.artifactId}/model/content-model.xml</value>
|
||||
@@ -36,5 +36,10 @@
|
||||
</props>
|
||||
</list>
|
||||
</property>
|
||||
<property name="labels">
|
||||
<list>
|
||||
<value>alfresco/module/${project.artifactId}/messages/workflow-messages</value>
|
||||
</list>
|
||||
</property>
|
||||
</bean>
|
||||
</beans>
|
@@ -0,0 +1,44 @@
|
||||
#set( $symbol_pound = '#' )
|
||||
#set( $symbol_dollar = '$' )
|
||||
#set( $symbol_escape = '\' )
|
||||
<?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.
|
||||
-->
|
||||
<beans xmlns="http://www.springframework.org/schema/beans"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://www.springframework.org/schema/beans
|
||||
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
|
||||
|
||||
<!-- A simple class that is initialized by Spring -->
|
||||
<bean id="${package}.Demo" class="${package}.platformsample.Demo" init-method="init" />
|
||||
|
||||
<!-- A simple module component that will be executed once.
|
||||
Note. this module component will only be executed once, and then there will be an entry for it in the Repo DB.
|
||||
So doing for example $ mvn clean install alfresco:run twice will only execute this component the first time.
|
||||
You need to remove /alf_data_dev for it to be executed again. -->
|
||||
<bean id="${package}.DemoComponent" class="${package}.platformsample.DemoComponent" parent="module.baseComponent" >
|
||||
<property name="moduleId" value="${artifactId}" /> <!-- See module.properties -->
|
||||
<property name="name" value="DemoComponent" />
|
||||
<property name="description" value="A demonstration component" />
|
||||
<property name="sinceVersion" value="1.0" />
|
||||
<property name="appliesFromVersion" value="0.99" /> <!-- 1.0 would not work here when using SNAPSHOT version in project -->
|
||||
<property name="nodeService" ref="NodeService" />
|
||||
<property name="nodeLocatorService" ref="nodeLocatorService" />
|
||||
</bean>
|
||||
|
||||
|
||||
</beans>
|
@@ -2,7 +2,6 @@
|
||||
#set( $symbol_dollar = '$' )
|
||||
#set( $symbol_escape = '\' )
|
||||
<?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
|
||||
@@ -19,7 +18,10 @@
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
<beans>
|
||||
<beans xmlns="http://www.springframework.org/schema/beans"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://www.springframework.org/schema/beans
|
||||
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
|
||||
<bean id="webscript.alfresco.tutorials.helloworld.get"
|
||||
class="${package}.platformsample.HelloWorldWebScript"
|
||||
parent="webscript">
|
@@ -0,0 +1 @@
|
||||
# Add here module-specific custom log4j.properties configuration
|
@@ -0,0 +1,5 @@
|
||||
#
|
||||
# Activiti My Process Workflow
|
||||
#
|
||||
my-process.workflow.title=My Process
|
||||
my-process.workflow.description=This is my custom process
|
@@ -73,7 +73,6 @@
|
||||
<atomic>true</atomic>
|
||||
<stored>false</stored>
|
||||
<tokenised>false</tokenised>
|
||||
<facetable>true</facetable>
|
||||
</index>
|
||||
<constraints>
|
||||
<constraint ref="acme:securityClassificationOptions"/>
|
@@ -15,12 +15,18 @@
|
||||
limitations under the License.
|
||||
|
||||
-->
|
||||
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>
|
||||
|
||||
<beans>
|
||||
<beans xmlns="http://www.springframework.org/schema/beans"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://www.springframework.org/schema/beans
|
||||
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
|
||||
|
||||
<!-- This is filtered by Maven at build time, so that module name is single sourced. -->
|
||||
<!-- Note. The bootstrap-context.xml file has to be loaded first.
|
||||
Otherwise your custom models are not yet loaded when your service beans are instantiated and you
|
||||
cannot for example register policies on them. -->
|
||||
<import resource="classpath:alfresco/module/${project.artifactId}/context/bootstrap-context.xml" />
|
||||
<import resource="classpath:alfresco/module/${project.artifactId}/context/service-context.xml" />
|
||||
<import resource="classpath:alfresco/module/${project.artifactId}/context/bootstrap-context.xml" />
|
||||
<import resource="classpath:alfresco/module/${project.artifactId}/context/webscript-context.xml" />
|
||||
|
||||
</beans>
|
@@ -0,0 +1,26 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<definitions
|
||||
xmlns:activiti="http://activiti.org/bpmn"
|
||||
xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" typeLanguage="http://www.w3.org/2001/XMLSchema"
|
||||
expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.activiti.org/test">
|
||||
|
||||
<process id="my-process">
|
||||
|
||||
<startEvent id="start" activiti:formKey="wf:submitAdhocTask"/>
|
||||
<sequenceFlow id="flow1" sourceRef="start" targetRef="someTask"/>
|
||||
|
||||
<userTask id="someTask" name="Activiti is awesome!" activiti:formKey="wf:adhocTask">
|
||||
<humanPerformer>
|
||||
<resourceAssignmentExpression>
|
||||
<formalExpression>${bpm_assignee.properties.userName}</formalExpression>
|
||||
</resourceAssignmentExpression>
|
||||
</humanPerformer>
|
||||
</userTask>
|
||||
<sequenceFlow id="flow2" sourceRef="someTask" targetRef="end"/>
|
||||
|
||||
<endEvent id="end"/>
|
||||
|
||||
</process>
|
||||
|
||||
</definitions>
|
@@ -0,0 +1,56 @@
|
||||
#set($symbol_pound='#')
|
||||
#set($symbol_dollar='$')
|
||||
#set($symbol_escape='\' )
|
||||
/**
|
||||
* Copyright (C) 2017 Alfresco Software Limited.
|
||||
* <p/>
|
||||
* This file is part of the Alfresco SDK project.
|
||||
* <p/>
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
* <p/>
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* <p/>
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package ${package}.platformsample;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.mockito.Mockito;
|
||||
import org.springframework.extensions.webscripts.*;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
|
||||
/**
|
||||
* Unit testing the Web Script Java Controller
|
||||
*
|
||||
* @author martin.bergljung@alfresco.com
|
||||
* @version 1.0
|
||||
* @since 3.0
|
||||
*/
|
||||
public class HelloWorldWebScriptControllerTest {
|
||||
|
||||
@Test
|
||||
public void testController() {
|
||||
WebScriptRequest req = Mockito.mock(WebScriptRequest.class);
|
||||
Status status = Mockito.mock(Status.class);
|
||||
Cache cache = Mockito.mock(Cache.class);
|
||||
|
||||
String helloPropName = "fromJava";
|
||||
String helloPropExpectedValue = "HelloFromJava";
|
||||
HelloWorldWebScript ws = new HelloWorldWebScript();
|
||||
Map<String, Object> model = ws.executeImpl(req, status, cache);
|
||||
|
||||
assertNotNull("Response from Web Script Java Controller is null", model);
|
||||
assertEquals("Incorrect Web Script Java Controller Response",
|
||||
helloPropExpectedValue, model.get(helloPropName));
|
||||
}
|
||||
}
|
@@ -0,0 +1,73 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
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 Docker Module</name>
|
||||
<description>Share Docker Module to generate the final Docker image</description>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<parent>
|
||||
<groupId>${groupId}</groupId>
|
||||
<artifactId>${rootArtifactId}</artifactId>
|
||||
<version>${version}</version>
|
||||
</parent>
|
||||
|
||||
<properties>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>${groupId}</groupId>
|
||||
<artifactId>${rootArtifactId}-share</artifactId>
|
||||
<version>${version}</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-dependency-plugin</artifactId>
|
||||
<executions>
|
||||
<!-- Collect extensions (JARs or AMPs) declared in this module do be deployed to docker -->
|
||||
<execution>
|
||||
<id>collect-extensions</id>
|
||||
<phase>package</phase>
|
||||
<goals>
|
||||
<goal>copy-dependencies</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<outputDirectory>${project.build.directory}/extensions</outputDirectory>
|
||||
<includeScope>runtime</includeScope>
|
||||
<!-- IMPORTANT: if using amp dependencies only, add <includeTypes>amp</includeTypes> -->
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<!-- Filter the Dockerfile and the other files added to the container to be able to replace maven properties -->
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-resources-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>copy-and-filter-docker-resources</id>
|
||||
<phase>validate</phase>
|
||||
<goals>
|
||||
<goal>copy-resources</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<outputDirectory>${project.build.directory}</outputDirectory>
|
||||
<resources>
|
||||
<resource>
|
||||
<directory>src/main/docker</directory>
|
||||
<filtering>true</filtering>
|
||||
</resource>
|
||||
</resources>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
@@ -0,0 +1,16 @@
|
||||
FROM ${docker.share.image}:${alfresco.share.docker.version}
|
||||
|
||||
ARG TOMCAT_DIR=/usr/local/tomcat
|
||||
|
||||
# Copy Dockerfile to avoid an error if no JARs exist
|
||||
COPY Dockerfile extensions/*.jar $TOMCAT_DIR/webapps/share/WEB-INF/lib/
|
||||
|
||||
# Copy Dockerfile to avoid an error if no AMPs exist
|
||||
COPY Dockerfile extensions/*.amp $TOMCAT_DIR/amps_share/
|
||||
RUN java -jar $TOMCAT_DIR/alfresco-mmt/alfresco-mmt*.jar install \
|
||||
$TOMCAT_DIR/amps_share $TOMCAT_DIR/webapps/share -directory -nobackup -force
|
||||
|
||||
COPY share-config-custom.xml $TOMCAT_DIR/shared/classes/alfresco/web-extension
|
||||
|
||||
COPY log4j.properties $TOMCAT_DIR/webapps/share/WEB-INF/classes
|
||||
COPY hotswap-agent.properties $TOMCAT_DIR/webapps/share/WEB-INF/classes
|
@@ -0,0 +1,52 @@
|
||||
#set( $symbol_pound = '#' )
|
||||
#set( $symbol_dollar = '$' )
|
||||
#set( $symbol_escape = '\' )
|
||||
# Enable hotswap so that changes in this module will be automatically reloaded
|
||||
# Watch for changed class files on watchResources path and reload class definition in the running application.
|
||||
autoHotswap=true
|
||||
#autoHotswap.port=8000
|
||||
|
||||
# Add a directory prior to application classpath (load classes and resources).
|
||||
#
|
||||
# This may be useful for example in multi module maven project to load class changes from upstream project
|
||||
# classes. Set extraClasspath to upstream project compiler output and .class file will have precedence to
|
||||
# classes from built JAR file.
|
||||
# i.e. monitor /target/classes
|
||||
# should work with extraClasspath=${project.build.outputDirectory}
|
||||
# If not try
|
||||
extraClasspath=/usr/local/tomcat/hotswap-agent
|
||||
|
||||
|
||||
# Comma separated list of disabled plugins
|
||||
# Use plugin name - e.g.
|
||||
# Hotswapper, AnonymousClassPatch, WatchResources, Hibernate, Spring, Jersey2, Jetty, Tomcat,
|
||||
# ZK, Logback, JSF, Seam, ELResolver, OsgiEquinox, Proxy, WebObjects, Weld, JBossModules, Resteasy, Gae
|
||||
disabledPlugins=Hibernate,Spring
|
||||
|
||||
# Add a directory prior to webapp path (load webapp resources).
|
||||
#
|
||||
# Load web application resources (such as HTML, JSP, CSS, ...) from this directory prior to default processing.
|
||||
# Use this setting to set to serve resources from source directory directly (e.g. src/main/webapp).
|
||||
extraWebappContext=/usr/local/tomcat/hotswap-agent/${rootArtifactId}-share/target/classes/META-INF/resources;
|
||||
|
||||
# Load static web resources from different directory.
|
||||
#
|
||||
# This setting is dependent on application server plugin(Jetty, Tomcat, JBoss, ...)
|
||||
webappDir=/usr/local/tomcat/hotswap-agent/${rootArtifactId}-share/target/classes/META-INF/resources;
|
||||
|
||||
# Watch for changes in a directory (resources only).
|
||||
#
|
||||
# Similar to extraClasspath this property adds classpath when searching for resources (not classes).
|
||||
# While extra classpath just modifies the classloader, this setting does nothing until the resource
|
||||
# is really changed.
|
||||
#
|
||||
# Sometimes it is not possible to point extraClasspath to your i.e. src/main/resources, because there are multiple
|
||||
# replacements of resources in a building step (maven filtering resource option).
|
||||
# This setting will leave i.e. src/target/classes as default source for resources, but after the resource is modified
|
||||
# in src/main/resources, the new changed resource is served instead.
|
||||
# watchResources=
|
||||
|
||||
LOGGER.org.hotswap.agent=DEBUG
|
||||
#LOGGER.org.hotswap.agent.plugin=TRACE
|
||||
#LOGGER.org.hotswap.agent.watch=TRACE
|
||||
#LOGGER.org.hotswap.agent.command=TRACE
|
@@ -0,0 +1,57 @@
|
||||
#set( $symbol_pound = '#' )
|
||||
#set( $symbol_dollar = '$' )
|
||||
#set( $symbol_escape = '\' )
|
||||
# Set root logger level to error
|
||||
log4j.rootLogger=error, 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=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{yyyy-MM-dd} %d{ABSOLUTE} %-5p [%c] [%t] %m%n
|
||||
|
||||
# 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
|
||||
|
||||
# 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
|
||||
|
||||
# Alfresco
|
||||
log4j.logger.org.alfresco=error
|
||||
log4j.logger.org.alfresco.config=warn
|
||||
log4j.logger.org.alfresco.config.JndiObjectFactoryBean=warn
|
||||
log4j.logger.org.alfresco.web=info
|
||||
|
||||
# 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
|
||||
|
||||
# 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=
|
||||
|
||||
#-----------------------------------------------------------------------
|
||||
# Custom Share module logging goes here...
|
||||
#-----------------------------------------------------------------------
|
||||
|
||||
|
||||
|
@@ -0,0 +1,105 @@
|
||||
<alfresco-config>
|
||||
|
||||
<config evaluator="string-compare" condition="WebFramework">
|
||||
<web-framework>
|
||||
<autowire>
|
||||
<!-- Changing this to 'development' currently breaks the Admin Console.
|
||||
Instead we make a POST to clear Share dependency caches, see 'clear-caches-refresh-ws' profile. -->
|
||||
<mode>production</mode> <!-- not really need in the long run, used for YUI - deprecate -->
|
||||
</autowire>
|
||||
|
||||
<!--
|
||||
We don't need to do this when we have the new refresh mojos in the Alfresco plug-in.
|
||||
|
||||
If resource caching has been disabled then all the dependency caches will be cleared
|
||||
before processing the Aikau jsonModel request...
|
||||
(i.e. this.dojoDependencyHandler.clearCaches() )
|
||||
|
||||
For more information see the Aikau source code: https://github.com/Alfresco/Aikau
|
||||
-->
|
||||
<disable-resource-caching>false</disable-resource-caching>
|
||||
</web-framework>
|
||||
</config>
|
||||
|
||||
|
||||
<!-- Global config section -->
|
||||
<config replace="true">
|
||||
<flags>
|
||||
<!--
|
||||
Developer debugging setting to turn on DEBUG mode for client scripts in the browser
|
||||
-->
|
||||
<client-debug>true</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>
|
||||
|
||||
<!--
|
||||
Disable CSRF completely for now
|
||||
It seems Share has issues on 4.x with the embedded tomcat and CSRFPolicy
|
||||
-->
|
||||
<config evaluator="string-compare" condition="CSRFPolicy" replace="true">
|
||||
<filter/>
|
||||
</config>
|
||||
|
||||
|
||||
<!--
|
||||
Change so it is picked up from property where the Alfresco Repo Webapp is running
|
||||
(e.g. http://localhost:8080/alfresco)
|
||||
-->
|
||||
<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://${acs.host}: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://${acs.host}: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://${acs.host}: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://${acs.host}:8080/alfresco/activiti-admin</endpoint-url>
|
||||
<identity>user</identity>
|
||||
</endpoint>
|
||||
|
||||
<endpoint>
|
||||
<id>alfresco-api</id>
|
||||
<parent-id>alfresco</parent-id>
|
||||
<name>Alfresco Public API - user access</name>
|
||||
<description>Access to Alfresco Repository Public API that require user authentication.
|
||||
This makes use of the authentication that is provided by parent 'alfresco' endpoint.</description>
|
||||
<connector-id>alfresco</connector-id>
|
||||
<endpoint-url>http://${acs.host}:8080/alfresco/api</endpoint-url>
|
||||
<identity>user</identity>
|
||||
</endpoint>
|
||||
</remote>
|
||||
</config>
|
||||
</alfresco-config>
|
||||
|
@@ -1,26 +0,0 @@
|
||||
<assembly
|
||||
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3 http://maven.apache.org/xsd/assembly-1.1.3.xsd">
|
||||
|
||||
<id>build-amp-file</id>
|
||||
|
||||
<formats>
|
||||
<format>amp</format>
|
||||
</formats>
|
||||
|
||||
<includeBaseDirectory>false</includeBaseDirectory>
|
||||
<files>
|
||||
<file>
|
||||
<source>${project.basedir}/src/main/resources/alfresco/module/${project.artifactId}/module.properties</source>
|
||||
<filtered>true</filtered>
|
||||
</file>
|
||||
</files>
|
||||
|
||||
<dependencySets>
|
||||
<dependencySet>
|
||||
<outputDirectory>lib</outputDirectory>
|
||||
</dependencySet>
|
||||
</dependencySets>
|
||||
|
||||
</assembly>
|
@@ -5,7 +5,7 @@
|
||||
<artifactId>${artifactId}</artifactId>
|
||||
<name>Alfresco Share JAR Module</name>
|
||||
<packaging>jar</packaging>
|
||||
<description>Sample Share JAR Module (to be included in the share.war) - part of AIO - SDK 3</description>
|
||||
<description>Sample Share JAR Module (to be included in the share.war) - part of AIO - SDK 4.7</description>
|
||||
|
||||
<parent>
|
||||
<groupId>${groupId}</groupId>
|
||||
@@ -22,15 +22,18 @@
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>${alfresco.groupId}</groupId>
|
||||
<artifactId>${alfresco.share.war.artifactId}</artifactId>
|
||||
<artifactId>share</artifactId>
|
||||
<classifier>classes</classifier>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.alfresco.surf</groupId>
|
||||
<artifactId>spring-surf-api</artifactId>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-assembly-plugin</artifactId>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
</project>
|
@@ -0,0 +1,66 @@
|
||||
<assembly
|
||||
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3 http://maven.apache.org/xsd/assembly-1.1.3.xsd">
|
||||
|
||||
<!--
|
||||
Note that the Module dependency specified in the configuration section for the Alfresco Maven Plugin
|
||||
needs to be set to amp if any 3rd party libs should be applied by MMT:
|
||||
`
|
||||
<shareModules>
|
||||
<moduleDependency>
|
||||
<groupId>${project.groupId}</groupId>
|
||||
<artifactId>some-share</artifactId>
|
||||
<version>${project.version}</version>
|
||||
<type>amp</type>
|
||||
</moduleDependency>
|
||||
-->
|
||||
|
||||
<id>build-amp-file</id>
|
||||
|
||||
<formats>
|
||||
<format>amp</format>
|
||||
</formats>
|
||||
|
||||
<includeBaseDirectory>false</includeBaseDirectory>
|
||||
|
||||
<files>
|
||||
<!-- Filter module.properties and put at top level in the AMP -->
|
||||
<file>
|
||||
<source>src/main/resources/alfresco/module/${project.artifactId}/module.properties</source>
|
||||
<filtered>true</filtered>
|
||||
</file>
|
||||
<!-- Include AMP -> WAR mapping file (needed for custom mappings) -->
|
||||
<file>
|
||||
<source>src/main/assembly/file-mapping.properties</source>
|
||||
<filtered>false</filtered>
|
||||
</file>
|
||||
<!-- Add module-specific log4j.properties configuration at top level in the AMP -->
|
||||
<file>
|
||||
<source>src/main/resources/alfresco/module/${project.artifactId}/log4j.properties</source>
|
||||
<filtered>false</filtered>
|
||||
</file>
|
||||
</files>
|
||||
|
||||
<fileSets>
|
||||
<!-- Anything in the assembly/web directory will end up in the /web directory in the AMP -->
|
||||
<fileSet>
|
||||
<directory>src/main/assembly/web</directory>
|
||||
<outputDirectory>web</outputDirectory>
|
||||
<filtered>true</filtered> <!-- Will filter files and substitute POM props such as for example ${project.name} -->
|
||||
<excludes>
|
||||
<exclude>README.md</exclude>
|
||||
</excludes>
|
||||
</fileSet>
|
||||
</fileSets>
|
||||
|
||||
<!-- Include the project artifact (JAR) in the /lib directory in the AMP, and any 3rd party libraries (JARs)
|
||||
used by the customization.
|
||||
-->
|
||||
<dependencySets>
|
||||
<dependencySet>
|
||||
<outputDirectory>lib</outputDirectory>
|
||||
</dependencySet>
|
||||
</dependencySets>
|
||||
|
||||
</assembly>
|
@@ -0,0 +1,27 @@
|
||||
# Custom AMP to WAR location mappings
|
||||
|
||||
#
|
||||
# The following property can be used to include the standard set of mappings.
|
||||
# The contents of this file will override any defaults. The default is
|
||||
# 'true', i.e. the default mappings will be augmented or modified by values in
|
||||
# this file.
|
||||
#
|
||||
# Default mappings are:
|
||||
#
|
||||
# /config=/WEB-INF/classes
|
||||
# /lib=/WEB-INF/lib
|
||||
# /licenses=/WEB-INF/licenses
|
||||
# /web/jsp=/jsp
|
||||
# /web/css=/css
|
||||
# /web/images=/images
|
||||
# /web/scripts=/scripts
|
||||
# /web/php=/php
|
||||
#
|
||||
include.default=true
|
||||
|
||||
#
|
||||
# Custom mappings. If 'include.default' is false, then this is the complete set.
|
||||
# Map /web to / in AMP so we can override things like favicon.ico
|
||||
#
|
||||
/web=/
|
||||
|
@@ -0,0 +1,22 @@
|
||||
# Web resources that should override out-of-the-box files
|
||||
|
||||
Put here any web resources that should override out-of-the-box
|
||||
web resources, such as favicon.ico. They will then end up in the
|
||||
*/web* directory in the AMP, and applied to the WAR, and override
|
||||
any existing web resources in the Share.WAR.
|
||||
|
||||
**Note**. Module dependency needs to be set to amp for the web resources to be applied by MMT:
|
||||
|
||||
`
|
||||
<moduleDependency>
|
||||
<groupId>${project.groupId}</groupId>
|
||||
<artifactId>some-share</artifactId>
|
||||
<version>${project.version}</version>
|
||||
<type>amp</type>
|
||||
</moduleDependency>
|
||||
`
|
||||
|
||||
**Important**. New web resources should not be located here, but instead
|
||||
in the usual place in the *src/main/resources/META-INF/resources/<module-id>/* directory.
|
||||
|
||||
|
@@ -0,0 +1 @@
|
||||
# Add here module-specific custom log4j.properties configuration
|
@@ -5,7 +5,7 @@
|
||||
<beans xmlns="http://www.springframework.org/schema/beans"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://www.springframework.org/schema/beans
|
||||
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
|
||||
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
|
||||
|
||||
<!--
|
||||
Define beans related to this Share extension here, such as
|
@@ -0,0 +1,77 @@
|
||||
#set( $symbol_dollar = '$' )
|
||||
version: '3.4'
|
||||
services:
|
||||
${rootArtifactId}-share:
|
||||
image: alfresco-share-${rootArtifactId}:development
|
||||
build:
|
||||
dockerfile: ./Dockerfile
|
||||
context: ../../../${rootArtifactId}-share-docker/target
|
||||
environment:
|
||||
CATALINA_OPTS: "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=0.0.0.0:8888"
|
||||
REPO_HOST: ${rootArtifactId}-acs
|
||||
REPO_PORT: 8080
|
||||
ports:
|
||||
- "${symbol_dollar}{share.port}:8080"
|
||||
- "${symbol_dollar}{share.debug.port}:8888"
|
||||
${rootArtifactId}-acs:
|
||||
image: alfresco-content-services-${rootArtifactId}:development
|
||||
build:
|
||||
dockerfile: ./Dockerfile
|
||||
context: ../../../${rootArtifactId}-platform-docker/target
|
||||
environment:
|
||||
JAVA_TOOL_OPTIONS: "${symbol_dollar}{keystore.settings}"
|
||||
JAVA_OPTS: "
|
||||
-Dsolr.secureComms=secret
|
||||
-Dsolr.sharedSecret=secret
|
||||
-Dmessaging.broker.url=\"failover:(nio://${rootArtifactId}-activemq:61616)?timeout=3000&jms.useCompression=true\"
|
||||
"
|
||||
CATALINA_OPTS: "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=0.0.0.0:8888"
|
||||
ports:
|
||||
- "${symbol_dollar}{acs.port}:8080"
|
||||
- "${symbol_dollar}{acs.debug.port}:8888"
|
||||
volumes:
|
||||
- ${rootArtifactId}-acs-volume:/usr/local/tomcat/alf_data
|
||||
depends_on:
|
||||
- ${rootArtifactId}-postgres
|
||||
${rootArtifactId}-postgres:
|
||||
image: postgres:9.6
|
||||
environment:
|
||||
POSTGRES_DB: alfresco
|
||||
POSTGRES_USER: alfresco
|
||||
POSTGRES_PASSWORD: alfresco
|
||||
command: postgres -c max_connections=300 -c log_min_messages=LOG
|
||||
ports:
|
||||
- "${symbol_dollar}{postgres.port}:5432"
|
||||
volumes:
|
||||
- ${rootArtifactId}-db-volume:/var/lib/postgresql/data
|
||||
${rootArtifactId}-ass:
|
||||
image: alfresco/alfresco-search-services:2.0.3
|
||||
environment:
|
||||
SOLR_ALFRESCO_HOST: ${rootArtifactId}-acs
|
||||
SOLR_ALFRESCO_PORT: 8080
|
||||
SOLR_SOLR_HOST: ${rootArtifactId}-ass
|
||||
SOLR_SOLR_PORT: 8983
|
||||
SOLR_CREATE_ALFRESCO_DEFAULTS: alfresco,archive
|
||||
ALFRESCO_SECURE_COMMS: "secret"
|
||||
JAVA_TOOL_OPTIONS: "-Dalfresco.secureComms.secret=secret"
|
||||
ports:
|
||||
- "8983:8983"
|
||||
volumes:
|
||||
- ${rootArtifactId}-ass-volume:/opt/alfresco-search-services/contentstore
|
||||
- ${rootArtifactId}-ass-volume:/opt/alfresco-search-services/data
|
||||
${rootArtifactId}-activemq:
|
||||
image: alfresco/alfresco-activemq:5.16.1
|
||||
mem_limit: 1g
|
||||
ports:
|
||||
- 8161:8161 # Web Console
|
||||
- 5672:5672 # AMQP
|
||||
- 61616:61616 # OpenWire
|
||||
- 61613:61613 # STOMP
|
||||
|
||||
volumes:
|
||||
${rootArtifactId}-acs-volume:
|
||||
external: true
|
||||
${rootArtifactId}-db-volume:
|
||||
external: true
|
||||
${rootArtifactId}-ass-volume:
|
||||
external: true
|
@@ -5,70 +5,87 @@
|
||||
<groupId>${groupId}</groupId>
|
||||
<artifactId>${artifactId}</artifactId>
|
||||
<version>${version}</version>
|
||||
<name>AIO - SDK 3.0 Beta</name>
|
||||
<description>All-In-One (AIO) project for SDK 3.0</description>
|
||||
<name>AIO - SDK 4.7</name>
|
||||
<description>All-In-One (AIO) project for SDK 4.7</description>
|
||||
<packaging>pom</packaging>
|
||||
|
||||
<prerequisites>
|
||||
<maven>3.3.0</maven>
|
||||
</prerequisites>
|
||||
|
||||
<properties>
|
||||
<!-- Alfresco Maven Plugin version to use -->
|
||||
<alfresco.sdk.version>@@alfresco.sdk.parent.version@@</alfresco.sdk.version>
|
||||
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
|
||||
<!-- Alfresco Data directory, which will contain:
|
||||
Content Store (i.e. the files we upload)
|
||||
Database (i.e. the metadata for the uploaded files)
|
||||
Search index (i.e. the indexed content and metadata)
|
||||
Configured in alfresco-global.properties with the 'dir.root' property.
|
||||
-->
|
||||
<alfresco.data.location>${session.executionRootDirectory}/alf_data_dev</alfresco.data.location>
|
||||
|
||||
<!-- Duplicated with alfresco.solrHome in the plugin, we need them out here to do filtering -->
|
||||
<solr.home>${alfresco.data.location}/solr</solr.home>
|
||||
<solr.model.dir>${solr.home}/alfrescoModels</solr.model.dir>
|
||||
<solr.content.dir>${solr.home}/index</solr.content.dir>
|
||||
|
||||
<!-- Properties used in dependency declarations, you don't need to change these -->
|
||||
<alfresco.groupId>org.alfresco</alfresco.groupId>
|
||||
<alfresco.platform.war.artifactId>alfresco-platform</alfresco.platform.war.artifactId>
|
||||
<alfresco.share.war.artifactId>share</alfresco.share.war.artifactId>
|
||||
<alfresco.bomDependencyArtifactId>@@alfresco.bomDependency.artifactId@@</alfresco.bomDependencyArtifactId>
|
||||
<alfresco.platform.version>@@alfresco.platform.version@@</alfresco.platform.version>
|
||||
<alfresco.platform.docker.user>@@alfresco.platform.docker.user@@</alfresco.platform.docker.user>
|
||||
<alfresco.share.version>@@alfresco.share.version@@</alfresco.share.version>
|
||||
<alfresco.share.docker.version>@@alfresco.share.docker.version@@</alfresco.share.docker.version>
|
||||
|
||||
<!-- Alfresco Platform and Share webapp versions, these are the original Alfresco webapps that will be
|
||||
customized and then deployed and run by the tomcat maven plugin when
|
||||
executing for example $ mvn clean install alfresco:run -->
|
||||
<alfresco.platform.version>5.2.a-EA</alfresco.platform.version>
|
||||
<alfresco.share.version>5.1.g</alfresco.share.version>
|
||||
<!-- Docker images -->
|
||||
<docker.acs.image>@@alfresco.platform.docker.image@@</docker.acs.image>
|
||||
<docker.share.image>@@alfresco.share.docker.image@@</docker.share.image>
|
||||
|
||||
<!-- Alfresco Surf version, if you change Share version you might need to change Surf version -->
|
||||
<alfresco.surf.version>6.5</alfresco.surf.version>
|
||||
|
||||
<!-- Aikau framework version, it is released separately, so it can be useful to be able
|
||||
to bring in newer versions with bug fixes etc -->
|
||||
<aikau.version>1.0.82</aikau.version>
|
||||
|
||||
<!-- Alfresco Repo Database configuration.
|
||||
By default it uses a flat file H2 database to be able to run embedded.
|
||||
The H2 database implementation is brought in via the tomcat7-maven-plugin as a dependency.
|
||||
The data files for the H2 database will be created in a relative path, such as alf_data_dev/h2_data/alf_dev,
|
||||
see alfresco.db.url below.
|
||||
For more information about the db parameters see:http://www.h2database.com/html/features.html
|
||||
-->
|
||||
<alfresco.db.name>alf_dev</alfresco.db.name>
|
||||
<alfresco.db.username>alfresco</alfresco.db.username>
|
||||
<alfresco.db.password>alfresco</alfresco.db.password>
|
||||
<alfresco.db.params>AUTO_SERVER=TRUE;DB_CLOSE_ON_EXIT=FALSE;LOCK_TIMEOUT=10000;MVCC=FALSE;LOCK_MODE=0
|
||||
</alfresco.db.params>
|
||||
<alfresco.db.url>jdbc:h2:${alfresco.data.location}/h2_data/${alfresco.db.name};${alfresco.db.params}
|
||||
</alfresco.db.url>
|
||||
<alfresco.db.datasource.class>org.h2.jdbcx.JdbcDataSource</alfresco.db.datasource.class>
|
||||
<keystore.settings>@@keystore.settings@@</keystore.settings>
|
||||
|
||||
<!-- JRebel Hot reloading of classpath stuff and web resource stuff -->
|
||||
<jrebel.version>1.1.6</jrebel.version>
|
||||
<jrebel.version>1.1.8</jrebel.version>
|
||||
|
||||
<!-- Environment configuration properties -->
|
||||
<share.port>8180</share.port>
|
||||
<share.debug.port>9898</share.debug.port>
|
||||
<acs.host>${artifactId}-acs</acs.host>
|
||||
<acs.port>8080</acs.port>
|
||||
<acs.debug.port>8888</acs.debug.port>
|
||||
<postgres.port>5555</postgres.port>
|
||||
<!-- This parameter is only required for those cases in which ACS is not exposed in http://localhost:8080/alfresco (i.e. Windows Docker) -->
|
||||
<test.acs.endpoint.path>@@test.acs.endpoint.path@@</test.acs.endpoint.path>
|
||||
|
||||
<!-- Environment to use, Alfresco Maven Plugin will copy alfresco-global.properties from this directory -->
|
||||
<env>local</env>
|
||||
</properties>
|
||||
|
||||
<!-- Libs used in Unit and Integration tests -->
|
||||
<!-- IMPORTANT - Test dependencies need to be here in the top parent POM as
|
||||
the Alfresco Maven IT Mojo runs as part of the parent project ... -->
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.mockito</groupId>
|
||||
<artifactId>mockito-core</artifactId>
|
||||
<version>4.2.0</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.httpcomponents</groupId>
|
||||
<artifactId>httpclient</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<!-- The main Alfresco Repo dependency for compiling Java code in src/main/java -->
|
||||
<dependency>
|
||||
<groupId>${alfresco.groupId}</groupId>
|
||||
<artifactId>alfresco-remote-api</artifactId>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
<!-- Bring in Alfresco RAD so we get access to AlfrescoTestRunner classes -->
|
||||
<dependency>
|
||||
<groupId>org.alfresco.maven</groupId>
|
||||
<artifactId>alfresco-rad</artifactId>
|
||||
<version>${alfresco.sdk.version}</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
<dependencyManagement>
|
||||
<dependencies>
|
||||
<!-- This will import the dependencyManagement for all artifacts in the selected Alfresco platform.
|
||||
@@ -79,7 +96,7 @@
|
||||
-->
|
||||
<dependency>
|
||||
<groupId>${alfresco.groupId}</groupId>
|
||||
<artifactId>alfresco-platform-distribution</artifactId>
|
||||
<artifactId>${alfresco.bomDependencyArtifactId}</artifactId>
|
||||
<version>${alfresco.platform.version}</version>
|
||||
<type>pom</type>
|
||||
<scope>import</scope>
|
||||
@@ -88,14 +105,14 @@
|
||||
They are defined in alfresco-platform-distribution... -->
|
||||
<dependency>
|
||||
<groupId>${alfresco.groupId}</groupId>
|
||||
<artifactId>${alfresco.share.war.artifactId}</artifactId>
|
||||
<artifactId>share</artifactId>
|
||||
<version>${alfresco.share.version}</version>
|
||||
<type>war</type>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>${alfresco.groupId}</groupId>
|
||||
<artifactId>${alfresco.share.war.artifactId}</artifactId>
|
||||
<artifactId>share</artifactId>
|
||||
<version>${alfresco.share.version}</version>
|
||||
<classifier>classes</classifier>
|
||||
<scope>provided</scope>
|
||||
@@ -108,27 +125,20 @@
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
<!-- Redefine the following surf dependencies as they have no resolvable version in the
|
||||
alfresco-platform-distribution artifact -->
|
||||
<dependency>
|
||||
<groupId>org.alfresco.surf</groupId>
|
||||
<artifactId>spring-surf</artifactId>
|
||||
<version>${alfresco.surf.version}</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.alfresco.surf</groupId>
|
||||
<artifactId>spring-surf-api</artifactId>
|
||||
<version>${alfresco.surf.version}</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</dependencyManagement>
|
||||
|
||||
<build>
|
||||
<pluginManagement>
|
||||
<plugins>
|
||||
<!-- Build an AMP if 3rd party libs are needed by the extensions -->
|
||||
<!--
|
||||
Build an AMP if 3rd party libs are needed by the extensions
|
||||
JARs are the default artifact produced in your modules, if you want to build an amp for each module
|
||||
you have to enable this plugin and inspect the src/main/assembly.xml file if you want to customize
|
||||
the layout of your AMP. The end result is that Maven will produce both a JAR file and an AMP with your
|
||||
module.
|
||||
-->
|
||||
<!--
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-assembly-plugin</artifactId>
|
||||
@@ -154,105 +164,197 @@
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</plugin>
|
||||
-->
|
||||
|
||||
<!-- Filter resources in any sub-project with this config -->
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-resources-plugin</artifactId>
|
||||
<version>3.1.0</version>
|
||||
<configuration>
|
||||
<encoding>UTF-8</encoding>
|
||||
<nonFilteredFileExtensions> <!-- jpg, jpeg, gif, bmp and png are added automatically -->
|
||||
<nonFilteredFileExtension>ftl</nonFilteredFileExtension>
|
||||
<nonFilteredFileExtension>acp</nonFilteredFileExtension>
|
||||
<nonFilteredFileExtension>svg</nonFilteredFileExtension>
|
||||
<nonFilteredFileExtension>pdf</nonFilteredFileExtension>
|
||||
<nonFilteredFileExtension>doc</nonFilteredFileExtension>
|
||||
<nonFilteredFileExtension>docx</nonFilteredFileExtension>
|
||||
<nonFilteredFileExtension>xls</nonFilteredFileExtension>
|
||||
<nonFilteredFileExtension>xlsx</nonFilteredFileExtension>
|
||||
<nonFilteredFileExtension>ppt</nonFilteredFileExtension>
|
||||
<nonFilteredFileExtension>pptx</nonFilteredFileExtension>
|
||||
<nonFilteredFileExtension>bin</nonFilteredFileExtension>
|
||||
<nonFilteredFileExtension>lic</nonFilteredFileExtension>
|
||||
<nonFilteredFileExtension>swf</nonFilteredFileExtension>
|
||||
<nonFilteredFileExtension>zip</nonFilteredFileExtension>
|
||||
<nonFilteredFileExtension>msg</nonFilteredFileExtension>
|
||||
<nonFilteredFileExtension>jar</nonFilteredFileExtension>
|
||||
<nonFilteredFileExtension>ttf</nonFilteredFileExtension>
|
||||
<nonFilteredFileExtension>eot</nonFilteredFileExtension>
|
||||
<nonFilteredFileExtension>woff</nonFilteredFileExtension>
|
||||
<nonFilteredFileExtension>woff2</nonFilteredFileExtension>
|
||||
<nonFilteredFileExtension>css</nonFilteredFileExtension>
|
||||
<nonFilteredFileExtension>ico</nonFilteredFileExtension>
|
||||
<nonFilteredFileExtension>psd</nonFilteredFileExtension>
|
||||
<nonFilteredFileExtension>js</nonFilteredFileExtension>
|
||||
</nonFilteredFileExtensions>
|
||||
</configuration>
|
||||
</plugin>
|
||||
|
||||
<plugin>
|
||||
<groupId>org.zeroturnaround</groupId>
|
||||
<artifactId>jrebel-maven-plugin</artifactId>
|
||||
<version>${jrebel.version}</version>
|
||||
</plugin>
|
||||
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-jar-plugin</artifactId>
|
||||
<version>3.1.0</version>
|
||||
</plugin>
|
||||
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-failsafe-plugin</artifactId>
|
||||
<version>3.0.0-M1</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>integration-test</id>
|
||||
<phase>integration-test</phase>
|
||||
<goals>
|
||||
<goal>integration-test</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
<execution>
|
||||
<id>verify-test</id>
|
||||
<phase>verify</phase>
|
||||
<goals>
|
||||
<goal>verify</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.apache.maven.surefire</groupId>
|
||||
<artifactId>surefire-junit47</artifactId>
|
||||
<version>3.0.0-M1</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</plugin>
|
||||
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-dependency-plugin</artifactId>
|
||||
<version>3.1.1</version>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</pluginManagement>
|
||||
|
||||
<!-- Make sure resources in sub-projects are filtered -->
|
||||
<resources>
|
||||
<resource>
|
||||
<directory>src/main/resources</directory>
|
||||
<filtering>true</filtering>
|
||||
</resource>
|
||||
</resources>
|
||||
|
||||
<plugins>
|
||||
<!--
|
||||
The Alfresco Maven Plugin contains all the logic to run the extension
|
||||
in an embedded Tomcat with the H2 database.
|
||||
-->
|
||||
<plugin>
|
||||
<groupId>org.alfresco.maven.plugin</groupId>
|
||||
<artifactId>alfresco-maven-plugin</artifactId>
|
||||
<version>${alfresco.sdk.version}</version>
|
||||
<configuration>
|
||||
<!-- Default is to run with a Community edition, change to 'enterprise' if using Enterprise edition -->
|
||||
<alfrescoEdition>community</alfrescoEdition>
|
||||
|
||||
<!-- We need the flat file H2 database to run the Repo -->
|
||||
<enableH2>true</enableH2>
|
||||
<!-- We always need the Platform/Repo webapp - alfresco.war -->
|
||||
<enablePlatform>true</enablePlatform>
|
||||
<!-- Enable Solr webapp so we can use search -->
|
||||
<enableSolr>true</enableSolr>
|
||||
<!-- We need Share webapp, so we got a UI for working with the Repo -->
|
||||
<enableShare>true</enableShare>
|
||||
|
||||
<!--
|
||||
JARs and AMPs that should be overlayed/applied to the Platform/Repository WAR
|
||||
(i.e. alfresco.war)
|
||||
-->
|
||||
<platformModules>
|
||||
<moduleDependency>
|
||||
<groupId>${alfresco.groupId}</groupId>
|
||||
<artifactId>alfresco-share-services</artifactId>
|
||||
<version>${alfresco.share.version}</version>
|
||||
<type>amp</type>
|
||||
</moduleDependency>
|
||||
|
||||
<!-- Bring in custom Modules -->
|
||||
<moduleDependency>
|
||||
<groupId>${project.groupId}</groupId>
|
||||
<artifactId>${artifactId}-platform-jar</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</moduleDependency>
|
||||
</platformModules>
|
||||
|
||||
<!--
|
||||
JARs and AMPs that should be overlayed/applied to the Share WAR (i.e. share.war)
|
||||
-->
|
||||
<shareModules>
|
||||
<moduleDependency>
|
||||
<!-- Bring in a newer version of Aikau, can coexist with older versions in the
|
||||
WAR distribution, newest version is picked. -->
|
||||
<groupId>${alfresco.groupId}</groupId>
|
||||
<artifactId>aikau</artifactId>
|
||||
<version>${aikau.version}</version>
|
||||
</moduleDependency>
|
||||
|
||||
<!-- Bring in custom Modules -->
|
||||
<moduleDependency>
|
||||
<groupId>${project.groupId}</groupId>
|
||||
<artifactId>${artifactId}-share-jar</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</moduleDependency>
|
||||
</shareModules>
|
||||
</configuration>
|
||||
</plugin>
|
||||
|
||||
<!-- Filter the test resource files in the AIO parent project, and do property substitutions.
|
||||
We need this here to get it done before the Alfresco Maven Plugin run is executed. -->
|
||||
We need this config so this is done before the Alfresco Maven Plugin 'run' is executed. -->
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-resources-plugin</artifactId>
|
||||
<version>3.0.1</version>
|
||||
<inherited>false</inherited> <!-- Run only for the AIO parent Project -->
|
||||
<inherited>false</inherited>
|
||||
<!-- Run only for the AIO parent Project -->
|
||||
<executions>
|
||||
<execution>
|
||||
<id>copy-and-filter-test-resources</id>
|
||||
<id>copy-and-filter-docker-resources</id>
|
||||
<phase>validate</phase>
|
||||
<goals>
|
||||
<goal>copy-resources</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<outputDirectory>${project.build.testOutputDirectory}</outputDirectory>
|
||||
<outputDirectory>${project.build.outputDirectory}/docker</outputDirectory>
|
||||
<resources>
|
||||
<testResource>
|
||||
<directory>src/test/resources</directory>
|
||||
<resource>
|
||||
<directory>docker</directory>
|
||||
<filtering>true</filtering>
|
||||
</testResource>
|
||||
</resource>
|
||||
</resources>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
|
||||
<!-- Compress JavaScript files and store as *.min.js -->
|
||||
<plugin>
|
||||
<groupId>com.github.blutorange</groupId>
|
||||
<artifactId>closure-compiler-maven-plugin</artifactId>
|
||||
<version>2.28.0</version>
|
||||
<executions>
|
||||
<!-- Compress the JS files under the assembly folder -->
|
||||
<execution>
|
||||
<id>compress-assembly</id>
|
||||
<phase>generate-resources</phase>
|
||||
<goals>
|
||||
<goal>minify</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<baseSourceDir>${project.basedir}/src/main/assembly</baseSourceDir>
|
||||
<baseTargetDir>${project.basedir}/src/main/assembly</baseTargetDir>
|
||||
<sourceDir>web</sourceDir>
|
||||
<targetDir>web</targetDir>
|
||||
<skipMerge>true</skipMerge>
|
||||
<includes>
|
||||
<include>**/*.js</include>
|
||||
</includes>
|
||||
<excludes>
|
||||
<exclude>**/webscripts/**</exclude>
|
||||
<exclude>**/site-webscripts/**</exclude>
|
||||
<exclude>**/META-INF/**</exclude>
|
||||
<exclude>**/*.lib.js</exclude>
|
||||
<exclude>**/*.css</exclude>
|
||||
<exclude>**/*.min.js</exclude>
|
||||
<exclude>**/*.min.css</exclude>
|
||||
</excludes>
|
||||
<force>true</force>
|
||||
</configuration>
|
||||
</execution>
|
||||
<!-- Compress the JS files under the resources folder -->
|
||||
<execution>
|
||||
<id>compress-resources</id>
|
||||
<phase>generate-resources</phase>
|
||||
<goals>
|
||||
<goal>minify</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<baseSourceDir>${project.basedir}/src/main</baseSourceDir>
|
||||
<baseTargetDir>${project.basedir}/src/main</baseTargetDir>
|
||||
<sourceDir>resources</sourceDir>
|
||||
<targetDir>resources</targetDir>
|
||||
<skipMerge>true</skipMerge>
|
||||
<includes>
|
||||
<include>**/*.js</include>
|
||||
</includes>
|
||||
<excludes>
|
||||
<exclude>**/webscripts/**</exclude>
|
||||
<exclude>**/site-webscripts/**</exclude>
|
||||
<exclude>**/*.lib.js</exclude>
|
||||
<exclude>**/*.css</exclude>
|
||||
<exclude>**/*.min.js</exclude>
|
||||
<exclude>**/*.min.css</exclude>
|
||||
</excludes>
|
||||
<force>true</force>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
|
||||
<!-- Hot reloading with JRebel -->
|
||||
<plugin>
|
||||
<groupId>org.zeroturnaround</groupId>
|
||||
<artifactId>jrebel-maven-plugin</artifactId>
|
||||
<version>${jrebel.version}</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>generate-rebel-xml</id>
|
||||
@@ -269,10 +371,8 @@
|
||||
<fallback>all</fallback>
|
||||
<resources>
|
||||
<resource>
|
||||
<!--
|
||||
Empty resource element marks default configuration. By
|
||||
default it is placed first in generated configuration.
|
||||
-->
|
||||
<directory>${project.build.outputDirectory}</directory>
|
||||
<directory>${project.build.testOutputDirectory}</directory>
|
||||
</resource>
|
||||
</resources>
|
||||
</classpath>
|
||||
@@ -286,17 +386,66 @@
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
|
||||
<resources>
|
||||
<!-- Filter the resource files in all the sub-projects, and do property substitutions -->
|
||||
<resource>
|
||||
<directory>src/main/resources</directory>
|
||||
<filtering>true</filtering>
|
||||
</resource>
|
||||
</resources>
|
||||
|
||||
</build>
|
||||
|
||||
<profiles>
|
||||
<profile>
|
||||
<id>java8</id>
|
||||
<activation>
|
||||
<jdk>[1.8,11.0)</jdk>
|
||||
</activation>
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<version>3.8.0</version>
|
||||
<configuration>
|
||||
<source>1.8</source>
|
||||
<target>1.8</target>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</profile>
|
||||
<profile>
|
||||
<id>java11</id>
|
||||
<activation>
|
||||
<jdk>[11.0,17)</jdk>
|
||||
</activation>
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<version>3.8.0</version>
|
||||
<configuration>
|
||||
<release>11</release>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</profile>
|
||||
<profile>
|
||||
<id>java17</id>
|
||||
<activation>
|
||||
<jdk>[17,)</jdk>
|
||||
</activation>
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<version>3.8.0</version>
|
||||
<configuration>
|
||||
<release>17</release>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</profile>
|
||||
</profiles>
|
||||
|
||||
<!--
|
||||
Alfresco Maven Repositories
|
||||
-->
|
||||
@@ -313,7 +462,17 @@
|
||||
<updatePolicy>daily</updatePolicy>
|
||||
</snapshots>
|
||||
</repository>
|
||||
<!-- Alfresco Enterprise Edition Artifacts, put username/pwd for server in settings.xml -->
|
||||
<repository>
|
||||
<id>alfresco-private-repository</id>
|
||||
<url>https://artifacts.alfresco.com/nexus/content/groups/private</url>
|
||||
</repository>
|
||||
<repository>
|
||||
<id>alfresco-internal</id>
|
||||
<url>https://artifacts.alfresco.com/nexus/content/groups/internal</url>
|
||||
</repository>
|
||||
</repositories>
|
||||
|
||||
<pluginRepositories>
|
||||
<pluginRepository>
|
||||
<id>alfresco-plugin-public</id>
|
||||
@@ -328,5 +487,4 @@
|
||||
</snapshots>
|
||||
</pluginRepository>
|
||||
</pluginRepositories>
|
||||
|
||||
</project>
|
||||
|
@@ -1,9 +1,128 @@
|
||||
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||
:: Dev environment startup script for Alfresco Community ::
|
||||
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||
@echo off
|
||||
#set( $symbol_dollar = '$' )
|
||||
@ECHO OFF
|
||||
|
||||
set MAVEN_OPTS=-Xms256m -Xmx2G
|
||||
SET COMPOSE_FILE_PATH=%CD%\target\classes\docker\docker-compose.yml
|
||||
|
||||
mvn clean install -DskipTests=true alfresco:run
|
||||
IF [%M2_HOME%]==[] (
|
||||
SET MVN_EXEC=mvn
|
||||
)
|
||||
|
||||
IF NOT [%M2_HOME%]==[] (
|
||||
SET MVN_EXEC=%M2_HOME%\bin\mvn
|
||||
)
|
||||
|
||||
IF [%1]==[] (
|
||||
echo "Usage: %0 {build_start|build_start_it_supported|start|stop|purge|tail|reload_share|reload_acs|build_test|test}"
|
||||
GOTO END
|
||||
)
|
||||
|
||||
IF %1==build_start (
|
||||
CALL :down
|
||||
CALL :build
|
||||
CALL :start
|
||||
CALL :tail
|
||||
GOTO END
|
||||
)
|
||||
IF %1==build_start_it_supported (
|
||||
CALL :down
|
||||
CALL :build
|
||||
CALL :prepare-test
|
||||
CALL :start
|
||||
CALL :tail
|
||||
GOTO END
|
||||
)
|
||||
IF %1==start (
|
||||
CALL :start
|
||||
CALL :tail
|
||||
GOTO END
|
||||
)
|
||||
IF %1==stop (
|
||||
CALL :down
|
||||
GOTO END
|
||||
)
|
||||
IF %1==purge (
|
||||
CALL:down
|
||||
CALL:purge
|
||||
GOTO END
|
||||
)
|
||||
IF %1==tail (
|
||||
CALL :tail
|
||||
GOTO END
|
||||
)
|
||||
IF %1==reload_share (
|
||||
CALL :build_share
|
||||
CALL :start_share
|
||||
CALL :tail
|
||||
GOTO END
|
||||
)
|
||||
IF %1==reload_acs (
|
||||
CALL :build_acs
|
||||
CALL :start_acs
|
||||
CALL :tail
|
||||
GOTO END
|
||||
)
|
||||
IF %1==build_test (
|
||||
CALL :down
|
||||
CALL :build
|
||||
CALL :prepare-test
|
||||
CALL :start
|
||||
CALL :test
|
||||
CALL :tail_all
|
||||
CALL :down
|
||||
GOTO END
|
||||
)
|
||||
IF %1==test (
|
||||
CALL :test
|
||||
GOTO END
|
||||
)
|
||||
echo "Usage: %0 {build_start|start|stop|purge|tail|reload_share|reload_acs|build_test|test}"
|
||||
:END
|
||||
EXIT /B %ERRORLEVEL%
|
||||
|
||||
:start
|
||||
docker volume create ${rootArtifactId}-acs-volume
|
||||
docker volume create ${rootArtifactId}-db-volume
|
||||
docker volume create ${rootArtifactId}-ass-volume
|
||||
docker-compose -f "%COMPOSE_FILE_PATH%" up --build -d
|
||||
EXIT /B 0
|
||||
:start_share
|
||||
docker-compose -f "%COMPOSE_FILE_PATH%" up --build -d ${rootArtifactId}-share
|
||||
EXIT /B 0
|
||||
:start_acs
|
||||
docker-compose -f "%COMPOSE_FILE_PATH%" up --build -d ${rootArtifactId}-acs
|
||||
EXIT /B 0
|
||||
:down
|
||||
if exist "%COMPOSE_FILE_PATH%" (
|
||||
docker-compose -f "%COMPOSE_FILE_PATH%" down
|
||||
)
|
||||
EXIT /B 0
|
||||
:build
|
||||
call %MVN_EXEC% clean package
|
||||
EXIT /B 0
|
||||
:build_share
|
||||
docker-compose -f "%COMPOSE_FILE_PATH%" kill ${rootArtifactId}-share
|
||||
docker-compose -f "%COMPOSE_FILE_PATH%" rm -f ${rootArtifactId}-share
|
||||
call %MVN_EXEC% clean package -pl ${rootArtifactId}-share,${rootArtifactId}-share-docker
|
||||
EXIT /B 0
|
||||
:build_acs
|
||||
docker-compose -f "%COMPOSE_FILE_PATH%" kill ${rootArtifactId}-acs
|
||||
docker-compose -f "%COMPOSE_FILE_PATH%" rm -f ${rootArtifactId}-acs
|
||||
call %MVN_EXEC% clean package -pl ${rootArtifactId}-integration-tests,${rootArtifactId}-platform,${rootArtifactId}-platform-docker
|
||||
EXIT /B 0
|
||||
:tail
|
||||
docker-compose -f "%COMPOSE_FILE_PATH%" logs -f
|
||||
EXIT /B 0
|
||||
:tail_all
|
||||
docker-compose -f "%COMPOSE_FILE_PATH%" logs --tail="all"
|
||||
EXIT /B 0
|
||||
:prepare-test
|
||||
call %MVN_EXEC% verify -DskipTests=true -pl ${rootArtifactId}-platform,${rootArtifactId}-integration-tests,${rootArtifactId}-platform-docker
|
||||
EXIT /B 0
|
||||
:test
|
||||
call %MVN_EXEC% verify -pl ${rootArtifactId}-platform,${rootArtifactId}-integration-tests
|
||||
EXIT /B 0
|
||||
:purge
|
||||
docker volume rm -f ${rootArtifactId}-acs-volume
|
||||
docker volume rm -f ${rootArtifactId}-db-volume
|
||||
docker volume rm -f ${rootArtifactId}-ass-volume
|
||||
EXIT /B 0
|
@@ -1,3 +1,123 @@
|
||||
#!/bin/bash
|
||||
#set( $symbol_dollar = '$' )
|
||||
#!/bin/sh
|
||||
|
||||
MAVEN_OPTS="-Xms256m -Xmx2G" mvn clean install -DskipTests=true alfresco:run
|
||||
export COMPOSE_FILE_PATH="${symbol_dollar}{PWD}/target/classes/docker/docker-compose.yml"
|
||||
|
||||
if [ -z "${symbol_dollar}{M2_HOME}" ]; then
|
||||
export MVN_EXEC="mvn"
|
||||
else
|
||||
export MVN_EXEC="${symbol_dollar}{M2_HOME}/bin/mvn"
|
||||
fi
|
||||
|
||||
start() {
|
||||
docker volume create ${rootArtifactId}-acs-volume
|
||||
docker volume create ${rootArtifactId}-db-volume
|
||||
docker volume create ${rootArtifactId}-ass-volume
|
||||
docker-compose -f "${symbol_dollar}COMPOSE_FILE_PATH" up --build -d
|
||||
}
|
||||
|
||||
start_share() {
|
||||
docker-compose -f "${symbol_dollar}COMPOSE_FILE_PATH" up --build -d ${rootArtifactId}-share
|
||||
}
|
||||
|
||||
start_acs() {
|
||||
docker-compose -f "${symbol_dollar}COMPOSE_FILE_PATH" up --build -d ${rootArtifactId}-acs
|
||||
}
|
||||
|
||||
down() {
|
||||
if [ -f "${symbol_dollar}COMPOSE_FILE_PATH" ]; then
|
||||
docker-compose -f "${symbol_dollar}COMPOSE_FILE_PATH" down
|
||||
fi
|
||||
}
|
||||
|
||||
purge() {
|
||||
docker volume rm -f ${rootArtifactId}-acs-volume
|
||||
docker volume rm -f ${rootArtifactId}-db-volume
|
||||
docker volume rm -f ${rootArtifactId}-ass-volume
|
||||
}
|
||||
|
||||
build() {
|
||||
${symbol_dollar}MVN_EXEC clean package
|
||||
}
|
||||
|
||||
build_share() {
|
||||
docker-compose -f "${symbol_dollar}COMPOSE_FILE_PATH" kill ${rootArtifactId}-share
|
||||
yes | docker-compose -f "${symbol_dollar}COMPOSE_FILE_PATH" rm -f ${rootArtifactId}-share
|
||||
${symbol_dollar}MVN_EXEC clean package -pl ${rootArtifactId}-share,${rootArtifactId}-share-docker
|
||||
}
|
||||
|
||||
build_acs() {
|
||||
docker-compose -f "${symbol_dollar}COMPOSE_FILE_PATH" kill ${rootArtifactId}-acs
|
||||
yes | docker-compose -f "${symbol_dollar}COMPOSE_FILE_PATH" rm -f ${rootArtifactId}-acs
|
||||
${symbol_dollar}MVN_EXEC clean package -pl ${rootArtifactId}-integration-tests,${rootArtifactId}-platform,${rootArtifactId}-platform-docker
|
||||
}
|
||||
|
||||
tail() {
|
||||
docker-compose -f "${symbol_dollar}COMPOSE_FILE_PATH" logs -f
|
||||
}
|
||||
|
||||
tail_all() {
|
||||
docker-compose -f "${symbol_dollar}COMPOSE_FILE_PATH" logs --tail="all"
|
||||
}
|
||||
|
||||
prepare_test() {
|
||||
${symbol_dollar}MVN_EXEC verify -DskipTests=true -pl ${rootArtifactId}-platform,${rootArtifactId}-integration-tests,${rootArtifactId}-platform-docker
|
||||
}
|
||||
|
||||
test() {
|
||||
${symbol_dollar}MVN_EXEC verify -pl ${rootArtifactId}-platform,${rootArtifactId}-integration-tests
|
||||
}
|
||||
|
||||
case "${symbol_dollar}1" in
|
||||
build_start)
|
||||
down
|
||||
build
|
||||
start
|
||||
tail
|
||||
;;
|
||||
build_start_it_supported)
|
||||
down
|
||||
build
|
||||
prepare_test
|
||||
start
|
||||
tail
|
||||
;;
|
||||
start)
|
||||
start
|
||||
tail
|
||||
;;
|
||||
stop)
|
||||
down
|
||||
;;
|
||||
purge)
|
||||
down
|
||||
purge
|
||||
;;
|
||||
tail)
|
||||
tail
|
||||
;;
|
||||
reload_share)
|
||||
build_share
|
||||
start_share
|
||||
tail
|
||||
;;
|
||||
reload_acs)
|
||||
build_acs
|
||||
start_acs
|
||||
tail
|
||||
;;
|
||||
build_test)
|
||||
down
|
||||
build
|
||||
prepare_test
|
||||
start
|
||||
test
|
||||
tail_all
|
||||
down
|
||||
;;
|
||||
test)
|
||||
test
|
||||
;;
|
||||
*)
|
||||
echo "Usage: ${symbol_dollar}0 {build_start|build_start_it_supported|start|stop|purge|tail|reload_share|reload_acs|build_test|test}"
|
||||
esac
|
@@ -1,7 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Context crossContext="true">
|
||||
<Environment name="solr/home" type="java.lang.String" value="${solr.home}" override="true"/>
|
||||
<Environment name="solr/model/dir" type="java.lang.String" value="${solr.model.dir}" override="true"/>
|
||||
<Environment name="solr/content/dir" type="java.lang.String" value="${solr.content.dir}" override="true"/>
|
||||
|
||||
</Context>
|
@@ -1,4 +0,0 @@
|
||||
version=0.1-SNAPSHOT
|
||||
groupId=archetype.it
|
||||
artifactId=allInOneTest
|
||||
package=it.pkg
|
@@ -1 +0,0 @@
|
||||
verify
|
@@ -1,5 +0,0 @@
|
||||
version=0.1-SNAPSHOT
|
||||
groupId=archetype.it
|
||||
artifactId=allInOneTestRunEnterprise
|
||||
package=it.pkg
|
||||
|
@@ -1 +0,0 @@
|
||||
verify -Prun -Penterprise -Dmaven.tomcat.fork=true
|
@@ -1,4 +0,0 @@
|
||||
version=0.1-SNAPSHOT
|
||||
groupId=archetype.it
|
||||
artifactId=allInOneTestRun
|
||||
package=it.pkg
|
@@ -1 +0,0 @@
|
||||
verify -Prun -Dmaven.tomcat.fork=true
|
@@ -3,16 +3,16 @@
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<groupId>org.alfresco.maven.archetype</groupId>
|
||||
<artifactId>alfresco-amp-archetype</artifactId>
|
||||
<artifactId>alfresco-platform-jar-archetype</artifactId>
|
||||
|
||||
<packaging>maven-archetype</packaging>
|
||||
<name>Maven Alfresco SDK - Repository AMP Archetype</name>
|
||||
<description>Sample project with full support for lifecycle and rapid development of Repository AMPs (Alfresco Module Packages)</description>
|
||||
<name>Alfresco SDK - Platform JAR Archetype</name>
|
||||
<description>Sample project with full support for lifecycle and rapid development of Platform/Repository JARs and AMPs (Alfresco Module Packages)</description>
|
||||
|
||||
<parent>
|
||||
<groupId>org.alfresco.maven</groupId>
|
||||
<artifactId>alfresco-sdk-aggregator</artifactId>
|
||||
<version>3.0.0-beta-3</version>
|
||||
<version>4.7.0</version>
|
||||
<relativePath>../../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
@@ -39,15 +39,17 @@
|
||||
<filtering>false</filtering>
|
||||
</resource>
|
||||
</resources>
|
||||
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-resources-plugin</artifactId>
|
||||
<version>2.7</version>
|
||||
<configuration>
|
||||
<useDefaultDelimiters>false</useDefaultDelimiters>
|
||||
<delimiters>
|
||||
<delimiter>@@</delimiter>
|
||||
</delimiters>
|
||||
<addDefaultExcludes>false</addDefaultExcludes>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
|
@@ -0,0 +1,2 @@
|
||||
def file = new File( request.getOutputDirectory(), request.getArtifactId()+"/run.sh" );
|
||||
file.setExecutable(true, false);
|
@@ -11,12 +11,40 @@
|
||||
</requiredProperties>
|
||||
|
||||
<fileSets>
|
||||
<fileSet encoding="UTF-8" filtered="true">
|
||||
<directory>docker</directory>
|
||||
<includes>
|
||||
<include>**</include>
|
||||
</includes>
|
||||
</fileSet>
|
||||
<fileSet filtered="false" packaged="false" encoding="UTF-8">
|
||||
<directory>src/main/assembly</directory>
|
||||
<includes>
|
||||
<include>**/*.xml</include>
|
||||
<include>**</include>
|
||||
</includes>
|
||||
</fileSet>
|
||||
<fileSet encoding="UTF-8" filtered="false">
|
||||
<directory>src/main/docker</directory>
|
||||
<includes>
|
||||
<include>license/**</include>
|
||||
<include>Dockerfile</include>
|
||||
<include>disable-webscript-caching-context.xml</include>
|
||||
</includes>
|
||||
<excludes>
|
||||
<exclude>**/*.properties</exclude>
|
||||
</excludes>
|
||||
</fileSet>
|
||||
<fileSet encoding="UTF-8" filtered="true">
|
||||
<directory>src/main/docker</directory>
|
||||
<includes>
|
||||
<include>**/*.properties</include>
|
||||
</includes>
|
||||
<excludes>
|
||||
<exclude>license/**</exclude>
|
||||
<exclude>Dockerfile</exclude>
|
||||
<exclude>disable-webscript-caching-context.xml</exclude>
|
||||
</excludes>
|
||||
</fileSet>
|
||||
<fileSet filtered="true" packaged="true" encoding="UTF-8">
|
||||
<directory>src/main/java</directory>
|
||||
<includes>
|
||||
@@ -36,31 +64,18 @@
|
||||
</includes>
|
||||
<excludes>
|
||||
<exclude>**/*-context.xml</exclude>
|
||||
<exclude>**/log4j.properties</exclude>
|
||||
</excludes>
|
||||
</fileSet>
|
||||
<fileSet encoding="UTF-8" filtered="true" packaged="false">
|
||||
<directory>src/main/resources</directory>
|
||||
<includes>
|
||||
<include>**/*-context.xml</include>
|
||||
<include>**/log4j.properties</include>
|
||||
</includes>
|
||||
</fileSet>
|
||||
<fileSet encoding="UTF-8" filtered="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">
|
||||
<fileSet encoding="UTF-8" filtered="true">
|
||||
<directory></directory>
|
||||
<includes>
|
||||
<include>.gitignore</include>
|
||||
<include>run.sh</include>
|
||||
<include>run.bat</include>
|
||||
<include>README.md</include>
|
||||
|
38
archetypes/alfresco-platform-jar-archetype/src/main/resources/archetype-resources/.gitignore
vendored
Normal file
38
archetypes/alfresco-platform-jar-archetype/src/main/resources/archetype-resources/.gitignore
vendored
Normal file
@@ -0,0 +1,38 @@
|
||||
**.log*
|
||||
|
||||
# Maven
|
||||
target/
|
||||
pom.xml.tag
|
||||
pom.xml.releaseBackup
|
||||
pom.xml.versionsBackup
|
||||
pom.xml.next
|
||||
release.properties
|
||||
dependency-reduced-pom.xml
|
||||
buildNumber.properties
|
||||
.mvn/timing.properties
|
||||
.mvn/wrapper/maven-wrapper.jar
|
||||
|
||||
# Eclipse
|
||||
.metadata
|
||||
.project
|
||||
.classpath
|
||||
bin/
|
||||
tmp/
|
||||
*.tmp
|
||||
.settings/
|
||||
.loadpath
|
||||
.recommenders
|
||||
|
||||
# IntelliJ IDEA
|
||||
**.idea
|
||||
**.iml
|
||||
|
||||
# Visual Studio Code
|
||||
.vscode/*
|
||||
!.vscode/settings.json
|
||||
!.vscode/tasks.json
|
||||
!.vscode/launch.json
|
||||
!.vscode/extensions.json
|
||||
|
||||
# macOS
|
||||
*.DS_Store
|
@@ -1,35 +1,44 @@
|
||||
# Alfresco Platform JAR Module - SDK 3
|
||||
# Alfresco ACS JAR Module - SDK 4.7
|
||||
|
||||
To run use `mvn clean install -DskipTests=true alfresco:run` or `./run.sh` and verify that it
|
||||
This is an ACS project for Alfresco SDK 4.7.
|
||||
|
||||
* Runs the embedded Tomcat + H2 DB
|
||||
* Runs Alfresco Platform (Repository)
|
||||
* Runs Alfresco Solr4
|
||||
* Packages both as JAR and AMP assembly
|
||||
|
||||
Try cloning it, change the port and play with `enableShare`, `enablePlatform` and `enableSolr`.
|
||||
|
||||
Protip: This module will work just fine as a Share module if the files are changed and
|
||||
if the enablePlatform and enableSolr is disabled.
|
||||
Run with `./run.sh build_start` or `./run.bat build_start` and verify that it
|
||||
|
||||
* Runs Alfresco Content Service (ACS)
|
||||
* (Optional) Runs Alfresco Share
|
||||
* Runs Alfresco Search Service (ASS)
|
||||
* Runs PostgreSQL database
|
||||
* Deploys the JAR assembled module
|
||||
|
||||
All the services of the project are now run as docker containers. The run script offers the next tasks:
|
||||
|
||||
* `build_start`. Build the whole project, recreate the ACS docker image, start the dockerised environment composed by ACS, Share (optional), ASS
|
||||
and PostgreSQL and tail the logs of all the containers.
|
||||
* `build_start_it_supported`. Build the whole project including dependencies required for IT execution, recreate the ACS docker image, start the dockerised environment
|
||||
composed by ACS, Share (optional), ASS and PostgreSQL and tail the logs of all the containers.
|
||||
* `start`. Start the dockerised environment without building the project and tail the logs of all the containers.
|
||||
* `stop`. Stop the dockerised environment.
|
||||
* `purge`. Stop the dockerised container and delete all the persistent data (docker volumes).
|
||||
* `tail`. Tail the logs of all the containers.
|
||||
* `reload_acs`. Build the ACS module, recreate the ACS docker image and restart the ACS container.
|
||||
* `build_test`. Build the whole project, recreate the ACS docker image, start the dockerised environment, execute the integration tests and stop
|
||||
the environment.
|
||||
* `test`. Execute the integration tests (the environment must be already started).
|
||||
|
||||
# Few things to notice
|
||||
|
||||
* No parent pom
|
||||
* WAR assembly is handled by the Alfresco Maven Plugin configuration
|
||||
* No WAR projects, the jars are included in the custom docker images
|
||||
* No runner project - the Alfresco environment is now managed through [Docker](https://www.docker.com/)
|
||||
* Standard JAR packaging and layout
|
||||
* Works seamlessly with Eclipse and IntelliJ IDEA
|
||||
* JRebel for hot reloading, JRebel maven plugin for generating rebel.xml, agent usage: `MAVEN_OPTS=-Xms256m -Xmx1G -agentpath:/home/martin/apps/jrebel/lib/libjrebel64.so`
|
||||
* JRebel for hot reloading, JRebel maven plugin for generating rebel.xml [JRebel integration documentation]
|
||||
* AMP as an assembly
|
||||
* [Configurable Run mojo](https://github.com/Alfresco/alfresco-sdk/blob/sdk-3.0/plugins/alfresco-maven-plugin/src/main/java/org/alfresco/maven/plugin/RunMojo.java) in the `alfresco-maven-plugin`
|
||||
* No unit testing/functional tests just yet
|
||||
* Persistent test data through restart thanks to the use of Docker volumes for ACS, ASS and database data
|
||||
* Resources loaded from META-INF
|
||||
* Web Fragment (this includes a sample servlet configured via web fragment)
|
||||
|
||||
|
||||
# TODO
|
||||
|
||||
|
||||
* Abstract assembly into a dependency so we don't have to ship the assembly in the archetype
|
||||
* Purge,
|
||||
* Functional/remote unit tests
|
||||
|
||||
|
||||
|
||||
|
@@ -0,0 +1,73 @@
|
||||
#set( $symbol_dollar = '$' )
|
||||
version: '3.4'
|
||||
services:
|
||||
# Optional
|
||||
# ${rootArtifactId}-share:
|
||||
# image: ${symbol_dollar}{docker.share.image}:${symbol_dollar}{alfresco.share.version}
|
||||
# environment:
|
||||
# REPO_HOST: ${rootArtifactId}-acs
|
||||
# REPO_PORT: 8080
|
||||
# ports:
|
||||
# - "${symbol_dollar}{share.port}:8080"
|
||||
${rootArtifactId}-acs:
|
||||
image: alfresco-content-services-${rootArtifactId}:development
|
||||
build:
|
||||
dockerfile: ./Dockerfile
|
||||
context: ../../../target
|
||||
environment:
|
||||
JAVA_TOOL_OPTIONS: "${symbol_dollar}{keystore.settings}"
|
||||
JAVA_OPTS: "
|
||||
-Dsolr.secureComms=secret
|
||||
-Dsolr.sharedSecret=secret
|
||||
-Dmessaging.broker.url=\"failover:(nio://${rootArtifactId}-activemq:61616)?timeout=3000&jms.useCompression=true\"
|
||||
"
|
||||
CATALINA_OPTS: "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=0.0.0.0:8888"
|
||||
ports:
|
||||
- "${symbol_dollar}{acs.port}:8080"
|
||||
- "${symbol_dollar}{acs.debug.port}:8888"
|
||||
volumes:
|
||||
- ${rootArtifactId}-acs-volume:/usr/local/tomcat/alf_data
|
||||
depends_on:
|
||||
- ${rootArtifactId}-postgres
|
||||
${rootArtifactId}-postgres:
|
||||
image: postgres:9.6
|
||||
environment:
|
||||
POSTGRES_DB: alfresco
|
||||
POSTGRES_USER: alfresco
|
||||
POSTGRES_PASSWORD: alfresco
|
||||
command: postgres -c max_connections=300 -c log_min_messages=LOG
|
||||
ports:
|
||||
- "${symbol_dollar}{postgres.port}:5432"
|
||||
volumes:
|
||||
- ${rootArtifactId}-db-volume:/var/lib/postgresql/data
|
||||
${rootArtifactId}-ass:
|
||||
image: alfresco/alfresco-search-services:2.0.3
|
||||
environment:
|
||||
SOLR_ALFRESCO_HOST: ${rootArtifactId}-acs
|
||||
SOLR_ALFRESCO_PORT: 8080
|
||||
SOLR_SOLR_HOST: ${rootArtifactId}-ass
|
||||
SOLR_SOLR_PORT: 8983
|
||||
SOLR_CREATE_ALFRESCO_DEFAULTS: alfresco,archive
|
||||
ALFRESCO_SECURE_COMMS: "secret"
|
||||
JAVA_TOOL_OPTIONS: "-Dalfresco.secureComms.secret=secret"
|
||||
ports:
|
||||
- "8983:8983"
|
||||
volumes:
|
||||
- ${rootArtifactId}-ass-volume:/opt/alfresco-search-services/contentstore
|
||||
- ${rootArtifactId}-ass-volume:/opt/alfresco-search-services/data
|
||||
${rootArtifactId}-activemq:
|
||||
image: alfresco/alfresco-activemq:5.16.1
|
||||
mem_limit: 1g
|
||||
ports:
|
||||
- 8161:8161 # Web Console
|
||||
- 5672:5672 # AMQP
|
||||
- 61616:61616 # OpenWire
|
||||
- 61613:61613 # STOMP
|
||||
|
||||
volumes:
|
||||
${rootArtifactId}-acs-volume:
|
||||
external: true
|
||||
${rootArtifactId}-db-volume:
|
||||
external: true
|
||||
${rootArtifactId}-ass-volume:
|
||||
external: true
|
@@ -1,250 +1,573 @@
|
||||
<?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} Platform Jar Module - SDK 3</name>
|
||||
<description>Platform JAR Module (to be included in the alfresco.war) - SDK 3</description>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<properties>
|
||||
<!-- Alfresco Maven Plugin version to use -->
|
||||
<alfresco.sdk.version>@@alfresco.sdk.parent.version@@</alfresco.sdk.version>
|
||||
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
|
||||
<!-- Alfresco Data directory, which will contain:
|
||||
Content Store (i.e. the files we upload)
|
||||
Database (i.e. the metadata for the uploaded files)
|
||||
Search index (i.e. the indexed content and metadata)
|
||||
Configured in alfresco-global.properties with the 'dir.root' property.
|
||||
-->
|
||||
<alfresco.data.location>${session.executionRootDirectory}/alf_data_dev</alfresco.data.location>
|
||||
|
||||
<!-- Duplicated with alfresco.solrHome in the plugin, we need them out here to do filtering -->
|
||||
<solr.home>${alfresco.data.location}/solr</solr.home>
|
||||
<solr.model.dir>${solr.home}/alfrescoModels</solr.model.dir>
|
||||
<solr.content.dir>${solr.home}/index</solr.content.dir>
|
||||
|
||||
<!-- Properties used in dependency declarations, you don't need to change these -->
|
||||
<alfresco.groupId>org.alfresco</alfresco.groupId>
|
||||
|
||||
<!-- Alfresco Platform webapp version, this is the original Alfresco webapp that will be
|
||||
customized and then deployed and run by the tomcat maven plugin when
|
||||
executing for example $ mvn clean install alfresco:run -->
|
||||
<alfresco.platform.version>5.2.a-EA</alfresco.platform.version>
|
||||
<!-- Alfresco Share version, so we can bring in correct alfresco-share-services artifact -->
|
||||
<alfresco.share.version>5.1.g</alfresco.share.version>
|
||||
|
||||
<!-- Alfresco Repo Database configuration.
|
||||
By default it uses a flat file H2 database to be able to run embedded.
|
||||
The H2 database implementation is brought in via the tomcat7-maven-plugin as a dependency.
|
||||
The data files for the H2 database will be created in a relative path, such as alf_data_dev/h2_data/alf_dev,
|
||||
see alfresco.db.url below.
|
||||
For more information about the db parameters see:http://www.h2database.com/html/features.html
|
||||
-->
|
||||
<alfresco.db.name>alf_dev</alfresco.db.name>
|
||||
<alfresco.db.username>alfresco</alfresco.db.username>
|
||||
<alfresco.db.password>alfresco</alfresco.db.password>
|
||||
<alfresco.db.params>AUTO_SERVER=TRUE;DB_CLOSE_ON_EXIT=FALSE;LOCK_TIMEOUT=10000;MVCC=FALSE;LOCK_MODE=0
|
||||
</alfresco.db.params>
|
||||
<alfresco.db.url>jdbc:h2:${alfresco.data.location}/h2_data/${alfresco.db.name};${alfresco.db.params}
|
||||
</alfresco.db.url>
|
||||
<alfresco.db.datasource.class>org.h2.jdbcx.JdbcDataSource</alfresco.db.datasource.class>
|
||||
|
||||
<!-- JRebel Hot reloading of classpath stuff and web resource stuff -->
|
||||
<jrebel.version>1.1.6</jrebel.version>
|
||||
|
||||
<!-- Environment to use, Alfresco Maven Plugin will copy alfresco-global.properties from this directory -->
|
||||
<env>local</env>
|
||||
</properties>
|
||||
|
||||
<!-- This will import the dependencyManagement for all artifacts in the selected Alfresco platform.
|
||||
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
|
||||
-->
|
||||
<dependencyManagement>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>${alfresco.groupId}</groupId>
|
||||
<artifactId>alfresco-platform-distribution</artifactId>
|
||||
<version>${alfresco.platform.version}</version>
|
||||
<type>pom</type>
|
||||
<scope>import</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</dependencyManagement>
|
||||
|
||||
<dependencies>
|
||||
<!-- The main Alfresco Repo dependency for compiling Java code in src/main/java -->
|
||||
<dependency>
|
||||
<groupId>${alfresco.groupId}</groupId>
|
||||
<artifactId>alfresco-repository</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<!--
|
||||
The Alfresco Maven Plugin contains all the logic to run the extension
|
||||
in an embedded Tomcat with the H2 database.
|
||||
-->
|
||||
<plugin>
|
||||
<groupId>org.alfresco.maven.plugin</groupId>
|
||||
<artifactId>alfresco-maven-plugin</artifactId>
|
||||
<version>${alfresco.sdk.version}</version>
|
||||
<configuration>
|
||||
<!-- Default is to run with a Community edition, change to 'enterprise' if using Enterprise edition -->
|
||||
<alfrescoEdition>community</alfrescoEdition>
|
||||
|
||||
<!-- We need the flat file H2 database to run the Repo -->
|
||||
<enableH2>true</enableH2>
|
||||
<!-- This is a platform extension JAR, so we need the platform webapp (alfresco.war) -->
|
||||
<enablePlatform>true</enablePlatform>
|
||||
<!-- Enable Solr so we can use search, our Repo extension probably need search -->
|
||||
<enableSolr>true</enableSolr>
|
||||
<!-- We don't need the share.war if we don't have any UI extensions -->
|
||||
<enableShare>false</enableShare>
|
||||
|
||||
<!--
|
||||
JARs and AMPs that should be overlayed/applied to the Platform/Repository WAR
|
||||
(i.e. alfresco.war)
|
||||
-->
|
||||
<platformModules>
|
||||
<!-- This AMP is needed if we are going to access the platform webapp from a Share webapp -->
|
||||
<moduleDependency>
|
||||
<groupId>${alfresco.groupId}</groupId>
|
||||
<artifactId>alfresco-share-services</artifactId>
|
||||
<version>${alfresco.share.version}</version>
|
||||
<type>amp</type>
|
||||
</moduleDependency>
|
||||
<!-- Bring in this JAR project, need to be included here, otherwise resources from META-INF
|
||||
will not be loaded, such as the test.html page
|
||||
-->
|
||||
<moduleDependency>
|
||||
<groupId>${project.groupId}</groupId>
|
||||
<artifactId>${project.artifactId}</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</moduleDependency>
|
||||
</platformModules>
|
||||
</configuration>
|
||||
</plugin>
|
||||
|
||||
<!-- Build an AMP if 3rd party libs are needed by the extension -->
|
||||
<plugin>
|
||||
<artifactId>maven-assembly-plugin</artifactId>
|
||||
<version>2.6</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>build-amp-file</id>
|
||||
<phase>package</phase>
|
||||
<goals>
|
||||
<goal>single</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<appendAssemblyId>false</appendAssemblyId>
|
||||
<descriptor>src/main/assembly/amp.xml</descriptor>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.alfresco.maven.plugin</groupId>
|
||||
<artifactId>alfresco-maven-plugin</artifactId>
|
||||
<version>${alfresco.sdk.version}</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</plugin>
|
||||
|
||||
<!-- Hot reloading with JRebel -->
|
||||
<plugin>
|
||||
<groupId>org.zeroturnaround</groupId>
|
||||
<artifactId>jrebel-maven-plugin</artifactId>
|
||||
<version>${jrebel.version}</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>generate-rebel-xml</id>
|
||||
<phase>process-resources</phase>
|
||||
<goals>
|
||||
<goal>generate</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
<configuration>
|
||||
<!-- For more information about how to configure JRebel plugin see:
|
||||
http://manuals.zeroturnaround.com/jrebel/standalone/maven.html#maven-rebel-xml -->
|
||||
<classpath>
|
||||
<fallback>all</fallback>
|
||||
<resources>
|
||||
<resource>
|
||||
<!--
|
||||
Empty resource element marks default configuration. By
|
||||
default it is placed first in generated configuration.
|
||||
-->
|
||||
</resource>
|
||||
</resources>
|
||||
</classpath>
|
||||
|
||||
<!--
|
||||
alwaysGenerate - default is false
|
||||
If 'false' - rebel.xml is generated if timestamps of pom.xml and the current rebel.xml file are not equal.
|
||||
If 'true' - rebel.xml will always be generated
|
||||
-->
|
||||
<alwaysGenerate>true</alwaysGenerate>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
|
||||
<resources>
|
||||
<!-- Filter the resource files in this project and do property substitutions -->
|
||||
<resource>
|
||||
<directory>src/main/resources</directory>
|
||||
<filtering>true</filtering>
|
||||
</resource>
|
||||
</resources>
|
||||
<testResources>
|
||||
<!-- Filter the test resource files in this project and do property substitutions -->
|
||||
<testResource>
|
||||
<directory>src/test/resources</directory>
|
||||
<filtering>true</filtering>
|
||||
</testResource>
|
||||
</testResources>
|
||||
</build>
|
||||
|
||||
<!--
|
||||
Alfresco Maven Repositories
|
||||
-->
|
||||
<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>
|
||||
<pluginRepositories>
|
||||
<pluginRepository>
|
||||
<id>alfresco-plugin-public</id>
|
||||
<url>https://artifacts.alfresco.com/nexus/content/groups/public</url>
|
||||
</pluginRepository>
|
||||
<pluginRepository>
|
||||
<id>alfresco-plugin-public-snapshots</id>
|
||||
<url>https://artifacts.alfresco.com/nexus/content/groups/public-snapshots</url>
|
||||
<snapshots>
|
||||
<enabled>true</enabled>
|
||||
<updatePolicy>daily</updatePolicy>
|
||||
</snapshots>
|
||||
</pluginRepository>
|
||||
</pluginRepositories>
|
||||
|
||||
</project>
|
||||
<?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} Platform/Repository JAR Module</name>
|
||||
<description>Platform/Repo JAR Module (to be included in the alfresco.war)</description>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<properties>
|
||||
<!-- Alfresco Maven Plugin version to use -->
|
||||
<alfresco.sdk.version>@@alfresco.sdk.parent.version@@</alfresco.sdk.version>
|
||||
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
|
||||
<!-- Properties used in dependency declarations, you don't need to change these -->
|
||||
<alfresco.groupId>org.alfresco</alfresco.groupId>
|
||||
<alfresco.bomDependencyArtifactId>@@alfresco.bomDependency.artifactId@@</alfresco.bomDependencyArtifactId>
|
||||
<alfresco.platform.version>@@alfresco.platform.version@@</alfresco.platform.version>
|
||||
<alfresco.platform.docker.user>@@alfresco.platform.docker.user@@</alfresco.platform.docker.user>
|
||||
<alfresco.share.version>@@alfresco.share.version@@</alfresco.share.version>
|
||||
<alfresco.share.docker.version>@@alfresco.share.docker.version@@</alfresco.share.docker.version>
|
||||
|
||||
<!-- Docker images -->
|
||||
<docker.acs.image>@@alfresco.platform.docker.image@@</docker.acs.image>
|
||||
<docker.share.image>@@alfresco.share.docker.image@@</docker.share.image>
|
||||
|
||||
<keystore.settings>@@keystore.settings@@</keystore.settings>
|
||||
|
||||
<!-- JRebel Hot reloading of classpath stuff and web resource stuff -->
|
||||
<jrebel.version>1.1.8</jrebel.version>
|
||||
|
||||
<!-- Environment configuration properties -->
|
||||
<share.port>8180</share.port>
|
||||
<acs.host>${artifactId}-acs</acs.host>
|
||||
<acs.port>8080</acs.port>
|
||||
<acs.debug.port>8888</acs.debug.port>
|
||||
<postgres.port>5555</postgres.port>
|
||||
<!-- This parameter is only required for those cases in which ACS is not exposed in http://localhost:8080/alfresco (i.e. Windows Docker) -->
|
||||
<test.acs.endpoint.path></test.acs.endpoint.path>
|
||||
|
||||
</properties>
|
||||
|
||||
<!-- Libs used in Unit and Integration tests -->
|
||||
<!-- IMPORTANT - Test dependencies need to be here in the top parent POM as
|
||||
the Alfresco Maven IT Mojo runs as part of the parent project ... -->
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
<version>4.13.1</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.mockito</groupId>
|
||||
<artifactId>mockito-core</artifactId>
|
||||
<version>4.2.0</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.httpcomponents</groupId>
|
||||
<artifactId>httpclient</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<!-- The main Alfresco Repo dependency for compiling Java code in src/main/java -->
|
||||
<dependency>
|
||||
<groupId>${alfresco.groupId}</groupId>
|
||||
<artifactId>alfresco-remote-api</artifactId>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
<!-- Bring in Alfresco RAD so we get access to AlfrescoTestRunner classes -->
|
||||
<dependency>
|
||||
<groupId>org.alfresco.maven</groupId>
|
||||
<artifactId>alfresco-rad</artifactId>
|
||||
<version>${alfresco.sdk.version}</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
<dependencyManagement>
|
||||
<dependencies>
|
||||
<!-- This will import the dependencyManagement for all artifacts in the selected Alfresco platform.
|
||||
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.bomDependencyArtifactId}</artifactId>
|
||||
<version>${alfresco.platform.version}</version>
|
||||
<type>pom</type>
|
||||
<scope>import</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</dependencyManagement>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<!--
|
||||
Build an AMP if 3rd party libs are needed by the extensions
|
||||
JARs are the default artifact produced in your modules, if you want to build an amp for each module
|
||||
you have to enable this plugin and inspect the src/main/assembly.xml file if you want to customize
|
||||
the layout of your AMP. The end result is that Maven will produce both a JAR file and an AMP with your
|
||||
module.
|
||||
-->
|
||||
<!--
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-assembly-plugin</artifactId>
|
||||
<version>2.6</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>build-amp-file</id>
|
||||
<phase>package</phase>
|
||||
<goals>
|
||||
<goal>single</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<appendAssemblyId>false</appendAssemblyId>
|
||||
<descriptor>src/main/assembly/amp.xml</descriptor>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.alfresco.maven.plugin</groupId>
|
||||
<artifactId>alfresco-maven-plugin</artifactId>
|
||||
<version>${alfresco.sdk.version}</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</plugin>
|
||||
-->
|
||||
|
||||
<!-- Filter the test resource files in the AIO parent project, and do property substitutions.
|
||||
We need this config so this is done before the Alfresco Maven Plugin 'run' is executed. -->
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-resources-plugin</artifactId>
|
||||
<version>3.1.0</version>
|
||||
<configuration>
|
||||
<encoding>UTF-8</encoding>
|
||||
<nonFilteredFileExtensions> <!-- jpg, jpeg, gif, bmp and png are added automatically -->
|
||||
<nonFilteredFileExtension>ftl</nonFilteredFileExtension>
|
||||
<nonFilteredFileExtension>acp</nonFilteredFileExtension>
|
||||
<nonFilteredFileExtension>svg</nonFilteredFileExtension>
|
||||
<nonFilteredFileExtension>pdf</nonFilteredFileExtension>
|
||||
<nonFilteredFileExtension>doc</nonFilteredFileExtension>
|
||||
<nonFilteredFileExtension>docx</nonFilteredFileExtension>
|
||||
<nonFilteredFileExtension>xls</nonFilteredFileExtension>
|
||||
<nonFilteredFileExtension>xlsx</nonFilteredFileExtension>
|
||||
<nonFilteredFileExtension>ppt</nonFilteredFileExtension>
|
||||
<nonFilteredFileExtension>pptx</nonFilteredFileExtension>
|
||||
<nonFilteredFileExtension>bin</nonFilteredFileExtension>
|
||||
<nonFilteredFileExtension>lic</nonFilteredFileExtension>
|
||||
<nonFilteredFileExtension>swf</nonFilteredFileExtension>
|
||||
<nonFilteredFileExtension>zip</nonFilteredFileExtension>
|
||||
<nonFilteredFileExtension>msg</nonFilteredFileExtension>
|
||||
<nonFilteredFileExtension>jar</nonFilteredFileExtension>
|
||||
<nonFilteredFileExtension>ttf</nonFilteredFileExtension>
|
||||
<nonFilteredFileExtension>eot</nonFilteredFileExtension>
|
||||
<nonFilteredFileExtension>woff</nonFilteredFileExtension>
|
||||
<nonFilteredFileExtension>woff2</nonFilteredFileExtension>
|
||||
<nonFilteredFileExtension>css</nonFilteredFileExtension>
|
||||
<nonFilteredFileExtension>ico</nonFilteredFileExtension>
|
||||
<nonFilteredFileExtension>psd</nonFilteredFileExtension>
|
||||
<nonFilteredFileExtension>js</nonFilteredFileExtension>
|
||||
</nonFilteredFileExtensions>
|
||||
</configuration>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>copy-and-filter-docker-compose-resources</id>
|
||||
<phase>validate</phase>
|
||||
<goals>
|
||||
<goal>copy-resources</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<outputDirectory>${project.build.outputDirectory}/docker</outputDirectory>
|
||||
<resources>
|
||||
<resource>
|
||||
<directory>docker</directory>
|
||||
<filtering>true</filtering>
|
||||
</resource>
|
||||
</resources>
|
||||
</configuration>
|
||||
</execution>
|
||||
<execution>
|
||||
<id>copy-and-filter-docker-resources</id>
|
||||
<phase>validate</phase>
|
||||
<goals>
|
||||
<goal>copy-resources</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<outputDirectory>${project.build.directory}</outputDirectory>
|
||||
<resources>
|
||||
<resource>
|
||||
<directory>src/main/docker</directory>
|
||||
<filtering>true</filtering>
|
||||
<excludes>
|
||||
<exclude>**/*.jar</exclude>
|
||||
<exclude>**/*.so</exclude>
|
||||
<exclude>**/*.gz</exclude>
|
||||
</excludes>
|
||||
</resource>
|
||||
</resources>
|
||||
</configuration>
|
||||
</execution>
|
||||
<execution>
|
||||
<id>copy-and-filter-docker-resources-non-filtered</id>
|
||||
<phase>validate</phase>
|
||||
<goals>
|
||||
<goal>copy-resources</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<outputDirectory>${project.build.directory}</outputDirectory>
|
||||
<resources>
|
||||
<resource>
|
||||
<directory>src/main/docker</directory>
|
||||
<filtering>false</filtering>
|
||||
<includes>
|
||||
<include>**/*.jar</include>
|
||||
<include>**/*.so</include>
|
||||
<include>**/*.gz</include>
|
||||
</includes>
|
||||
</resource>
|
||||
</resources>
|
||||
</configuration>
|
||||
</execution>
|
||||
<execution>
|
||||
<id>copy-repository-extension</id>
|
||||
<phase>package</phase>
|
||||
<goals>
|
||||
<goal>copy-resources</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<outputDirectory>${project.build.directory}/extensions</outputDirectory>
|
||||
<resources>
|
||||
<resource>
|
||||
<directory>target</directory>
|
||||
<includes>
|
||||
<include>${project.build.finalName}.jar</include>
|
||||
</includes>
|
||||
<filtering>false</filtering>
|
||||
</resource>
|
||||
</resources>
|
||||
</configuration>
|
||||
</execution>
|
||||
<execution>
|
||||
<id>copy-repository-tests</id>
|
||||
<phase>pre-integration-test</phase>
|
||||
<goals>
|
||||
<goal>copy-resources</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<outputDirectory>${project.build.directory}/extensions</outputDirectory>
|
||||
<resources>
|
||||
<resource>
|
||||
<directory>target</directory>
|
||||
<includes>
|
||||
<include>${project.build.finalName}-tests.jar</include>
|
||||
</includes>
|
||||
<filtering>false</filtering>
|
||||
</resource>
|
||||
</resources>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-dependency-plugin</artifactId>
|
||||
<version>3.1.1</version>
|
||||
<executions>
|
||||
<!-- Copy the dependencies required for execute integration tests -->
|
||||
<execution>
|
||||
<id>collect-test-artifacts</id>
|
||||
<phase>pre-integration-test</phase>
|
||||
<goals>
|
||||
<goal>copy-dependencies</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<outputDirectory>${project.build.directory}/extensions</outputDirectory>
|
||||
<excludeScope>compile</excludeScope>
|
||||
</configuration>
|
||||
</execution>
|
||||
<!-- Collect extensions (JARs or AMPs) declared in this module to be deployed to docker -->
|
||||
<execution>
|
||||
<id>collect-extensions</id>
|
||||
<phase>package</phase>
|
||||
<goals>
|
||||
<goal>copy-dependencies</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<outputDirectory>${project.build.directory}/extensions</outputDirectory>
|
||||
<includeScope>runtime</includeScope>
|
||||
<!-- IMPORTANT: if using amp dependencies only, add <includeTypes>amp</includeTypes> -->
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
|
||||
<!-- Make sure we attach the tests so we can include them when running -->
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-jar-plugin</artifactId>
|
||||
<version>3.1.0</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<goals>
|
||||
<goal>test-jar</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
|
||||
<!-- Runs the integration tests, any class that follows naming convention
|
||||
"**/IT*.java", "**/*IT.java", and "**/*ITCase.java" will be considered an integration test -->
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-failsafe-plugin</artifactId>
|
||||
<version>3.0.0-M1</version>
|
||||
<configuration>
|
||||
<systemPropertyVariables>
|
||||
<acs.endpoint.path>${test.acs.endpoint.path}</acs.endpoint.path>
|
||||
</systemPropertyVariables>
|
||||
</configuration>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>integration-test</id>
|
||||
<phase>integration-test</phase>
|
||||
<goals>
|
||||
<goal>integration-test</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
<execution>
|
||||
<id>verify-test</id>
|
||||
<phase>verify</phase>
|
||||
<goals>
|
||||
<goal>verify</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.apache.maven.surefire</groupId>
|
||||
<artifactId>surefire-junit47</artifactId>
|
||||
<version>3.0.0-M1</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</plugin>
|
||||
|
||||
<!-- Compress JavaScript files and store as *.min.js -->
|
||||
<plugin>
|
||||
<groupId>com.github.blutorange</groupId>
|
||||
<artifactId>closure-compiler-maven-plugin</artifactId>
|
||||
<version>2.28.0</version>
|
||||
<executions>
|
||||
<!-- Compress the JS files under the assembly folder -->
|
||||
<execution>
|
||||
<id>compress-assembly</id>
|
||||
<phase>generate-resources</phase>
|
||||
<goals>
|
||||
<goal>minify</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<baseSourceDir>${project.basedir}/src/main/assembly</baseSourceDir>
|
||||
<baseTargetDir>${project.basedir}/src/main/assembly</baseTargetDir>
|
||||
<sourceDir>web</sourceDir>
|
||||
<targetDir>web</targetDir>
|
||||
<skipMerge>true</skipMerge>
|
||||
<includes>
|
||||
<include>**/*.js</include>
|
||||
</includes>
|
||||
<excludes>
|
||||
<exclude>**/webscripts/**</exclude>
|
||||
<exclude>**/site-webscripts/**</exclude>
|
||||
<exclude>**/META-INF/**</exclude>
|
||||
<exclude>**/*.lib.js</exclude>
|
||||
<exclude>**/*.css</exclude>
|
||||
<exclude>**/*.min.js</exclude>
|
||||
<exclude>**/*.min.css</exclude>
|
||||
</excludes>
|
||||
<force>true</force>
|
||||
</configuration>
|
||||
</execution>
|
||||
<!-- Compress the JS files under the resources folder -->
|
||||
<execution>
|
||||
<id>compress-resources</id>
|
||||
<phase>generate-resources</phase>
|
||||
<goals>
|
||||
<goal>minify</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<baseSourceDir>${project.basedir}/src/main</baseSourceDir>
|
||||
<baseTargetDir>${project.basedir}/src/main</baseTargetDir>
|
||||
<sourceDir>resources</sourceDir>
|
||||
<targetDir>resources</targetDir>
|
||||
<skipMerge>true</skipMerge>
|
||||
<includes>
|
||||
<include>**/*.js</include>
|
||||
</includes>
|
||||
<excludes>
|
||||
<exclude>**/webscripts/**</exclude>
|
||||
<exclude>**/site-webscripts/**</exclude>
|
||||
<exclude>**/*.lib.js</exclude>
|
||||
<exclude>**/*.css</exclude>
|
||||
<exclude>**/*.min.js</exclude>
|
||||
<exclude>**/*.min.css</exclude>
|
||||
</excludes>
|
||||
<force>true</force>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<!-- Hot reloading with JRebel -->
|
||||
<plugin>
|
||||
<groupId>org.zeroturnaround</groupId>
|
||||
<artifactId>jrebel-maven-plugin</artifactId>
|
||||
<version>${jrebel.version}</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>generate-rebel-xml</id>
|
||||
<phase>process-resources</phase>
|
||||
<goals>
|
||||
<goal>generate</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
<configuration>
|
||||
<!-- For more information about how to configure JRebel plugin see:
|
||||
http://manuals.zeroturnaround.com/jrebel/standalone/maven.html#maven-rebel-xml -->
|
||||
<classpath>
|
||||
<fallback>all</fallback>
|
||||
<resources>
|
||||
<resource>
|
||||
<directory>${project.build.outputDirectory}</directory>
|
||||
<directory>${project.build.testOutputDirectory}</directory>
|
||||
</resource>
|
||||
</resources>
|
||||
</classpath>
|
||||
|
||||
<!--
|
||||
alwaysGenerate - default is false
|
||||
If 'false' - rebel.xml is generated if timestamps of pom.xml and the current rebel.xml file are not equal.
|
||||
If 'true' - rebel.xml will always be generated
|
||||
-->
|
||||
<alwaysGenerate>true</alwaysGenerate>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
|
||||
<resources>
|
||||
<!-- Filter the resource files in this project and do property substitutions -->
|
||||
<resource>
|
||||
<directory>src/main/resources</directory>
|
||||
<filtering>true</filtering>
|
||||
</resource>
|
||||
</resources>
|
||||
<testResources>
|
||||
<!-- Filter the test resource files in this project and do property substitutions -->
|
||||
<testResource>
|
||||
<directory>src/test/resources</directory>
|
||||
<filtering>true</filtering>
|
||||
</testResource>
|
||||
</testResources>
|
||||
</build>
|
||||
|
||||
<profiles>
|
||||
<profile>
|
||||
<id>java8</id>
|
||||
<activation>
|
||||
<jdk>[1.8,11.0)</jdk>
|
||||
</activation>
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<version>3.8.0</version>
|
||||
<configuration>
|
||||
<source>1.8</source>
|
||||
<target>1.8</target>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</profile>
|
||||
<profile>
|
||||
<id>java11</id>
|
||||
<activation>
|
||||
<jdk>[11.0, 17)</jdk>
|
||||
</activation>
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<version>3.8.0</version>
|
||||
<configuration>
|
||||
<release>11</release>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</profile>
|
||||
<profile>
|
||||
<id>java17</id>
|
||||
<activation>
|
||||
<jdk>[17,)</jdk>
|
||||
</activation>
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<version>3.8.0</version>
|
||||
<configuration>
|
||||
<release>17</release>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</profile>
|
||||
</profiles>
|
||||
|
||||
<!--
|
||||
Alfresco Maven Repositories
|
||||
-->
|
||||
<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>
|
||||
<!-- Alfresco Enterprise Edition Artifacts, put username/pwd for server in settings.xml -->
|
||||
<repository>
|
||||
<id>alfresco-private-repository</id>
|
||||
<url>https://artifacts.alfresco.com/nexus/content/groups/private</url>
|
||||
</repository>
|
||||
<repository>
|
||||
<id>alfresco-internal</id>
|
||||
<url>https://artifacts.alfresco.com/nexus/content/groups/internal</url>
|
||||
</repository>
|
||||
</repositories>
|
||||
|
||||
<pluginRepositories>
|
||||
<pluginRepository>
|
||||
<id>alfresco-plugin-public</id>
|
||||
<url>https://artifacts.alfresco.com/nexus/content/groups/public</url>
|
||||
</pluginRepository>
|
||||
<pluginRepository>
|
||||
<id>alfresco-plugin-public-snapshots</id>
|
||||
<url>https://artifacts.alfresco.com/nexus/content/groups/public-snapshots</url>
|
||||
<snapshots>
|
||||
<enabled>true</enabled>
|
||||
<updatePolicy>daily</updatePolicy>
|
||||
</snapshots>
|
||||
</pluginRepository>
|
||||
</pluginRepositories>
|
||||
</project>
|
||||
|
@@ -1,8 +1,100 @@
|
||||
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||
:: Dev environment startup script for Alfresco Community ::
|
||||
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||
@echo off
|
||||
#set( $symbol_dollar = '$' )
|
||||
@ECHO OFF
|
||||
|
||||
set MAVEN_OPTS=-Xms256m -Xmx2G
|
||||
SET COMPOSE_FILE_PATH=%CD%\target\classes\docker\docker-compose.yml
|
||||
|
||||
mvn clean install -DskipTests=true alfresco:run
|
||||
IF [%M2_HOME%]==[] (
|
||||
SET MVN_EXEC=mvn
|
||||
)
|
||||
|
||||
IF NOT [%M2_HOME%]==[] (
|
||||
SET MVN_EXEC=%M2_HOME%\bin\mvn
|
||||
)
|
||||
|
||||
IF [%1]==[] (
|
||||
echo "Usage: %0 {build_start|build_start_it_supported|start|stop|purge|tail|build_test|test}"
|
||||
GOTO END
|
||||
)
|
||||
|
||||
IF %1==build_start (
|
||||
CALL :down
|
||||
CALL :build
|
||||
CALL :start
|
||||
CALL :tail
|
||||
GOTO END
|
||||
)
|
||||
IF %1==build_start_it_supported (
|
||||
CALL :down
|
||||
CALL :build
|
||||
CALL :prepare_test
|
||||
CALL :start
|
||||
CALL :tail
|
||||
GOTO END
|
||||
)
|
||||
IF %1==start (
|
||||
CALL :start
|
||||
CALL :tail
|
||||
GOTO END
|
||||
)
|
||||
IF %1==stop (
|
||||
CALL :down
|
||||
GOTO END
|
||||
)
|
||||
IF %1==purge (
|
||||
CALL:down
|
||||
CALL:purge
|
||||
GOTO END
|
||||
)
|
||||
IF %1==tail (
|
||||
CALL :tail
|
||||
GOTO END
|
||||
)
|
||||
IF %1==build_test (
|
||||
CALL :down
|
||||
CALL :build
|
||||
CALL :prepare_test
|
||||
CALL :start
|
||||
CALL :test
|
||||
CALL :tail_all
|
||||
CALL :down
|
||||
GOTO END
|
||||
)
|
||||
IF %1==test (
|
||||
CALL :test
|
||||
GOTO END
|
||||
)
|
||||
echo "Usage: %0 {build_start|start|stop|purge|tail|build_test|test}"
|
||||
:END
|
||||
EXIT /B %ERRORLEVEL%
|
||||
|
||||
:start
|
||||
docker volume create ${rootArtifactId}-acs-volume
|
||||
docker volume create ${rootArtifactId}-db-volume
|
||||
docker volume create ${rootArtifactId}-ass-volume
|
||||
docker-compose -f "%COMPOSE_FILE_PATH%" up --build -d
|
||||
EXIT /B 0
|
||||
:down
|
||||
if exist "%COMPOSE_FILE_PATH%" (
|
||||
docker-compose -f "%COMPOSE_FILE_PATH%" down
|
||||
)
|
||||
EXIT /B 0
|
||||
:build
|
||||
call %MVN_EXEC% clean package
|
||||
EXIT /B 0
|
||||
:tail
|
||||
docker-compose -f "%COMPOSE_FILE_PATH%" logs -f
|
||||
EXIT /B 0
|
||||
:tail_all
|
||||
docker-compose -f "%COMPOSE_FILE_PATH%" logs --tail="all"
|
||||
EXIT /B 0
|
||||
:prepare_test
|
||||
call %MVN_EXEC% verify -DskipTests=true
|
||||
EXIT /B 0
|
||||
:test
|
||||
call %MVN_EXEC% verify
|
||||
EXIT /B 0
|
||||
:purge
|
||||
docker volume rm -f ${rootArtifactId}-acs-volume
|
||||
docker volume rm -f ${rootArtifactId}-db-volume
|
||||
docker volume rm -f ${rootArtifactId}-ass-volume
|
||||
EXIT /B 0
|
@@ -1,3 +1,93 @@
|
||||
#!/bin/bash
|
||||
#set( $symbol_dollar = '$' )
|
||||
#!/bin/sh
|
||||
|
||||
MAVEN_OPTS="-Xms256m -Xmx2G" mvn clean install -DskipTests=true alfresco:run
|
||||
export COMPOSE_FILE_PATH="${symbol_dollar}{PWD}/target/classes/docker/docker-compose.yml"
|
||||
|
||||
if [ -z "${symbol_dollar}{M2_HOME}" ]; then
|
||||
export MVN_EXEC="mvn"
|
||||
else
|
||||
export MVN_EXEC="${symbol_dollar}{M2_HOME}/bin/mvn"
|
||||
fi
|
||||
|
||||
start() {
|
||||
docker volume create ${rootArtifactId}-acs-volume
|
||||
docker volume create ${rootArtifactId}-db-volume
|
||||
docker volume create ${rootArtifactId}-ass-volume
|
||||
docker-compose -f "${symbol_dollar}COMPOSE_FILE_PATH" up --build -d
|
||||
}
|
||||
|
||||
down() {
|
||||
if [ -f "${symbol_dollar}COMPOSE_FILE_PATH" ]; then
|
||||
docker-compose -f "${symbol_dollar}COMPOSE_FILE_PATH" down
|
||||
fi
|
||||
}
|
||||
|
||||
purge() {
|
||||
docker volume rm -f ${rootArtifactId}-acs-volume
|
||||
docker volume rm -f ${rootArtifactId}-db-volume
|
||||
docker volume rm -f ${rootArtifactId}-ass-volume
|
||||
}
|
||||
|
||||
build() {
|
||||
${symbol_dollar}MVN_EXEC clean package
|
||||
}
|
||||
|
||||
tail() {
|
||||
docker-compose -f "${symbol_dollar}COMPOSE_FILE_PATH" logs -f
|
||||
}
|
||||
|
||||
tail_all() {
|
||||
docker-compose -f "${symbol_dollar}COMPOSE_FILE_PATH" logs --tail="all"
|
||||
}
|
||||
|
||||
prepare_test() {
|
||||
${symbol_dollar}MVN_EXEC verify -DskipTests=true
|
||||
}
|
||||
|
||||
test() {
|
||||
${symbol_dollar}MVN_EXEC verify
|
||||
}
|
||||
|
||||
case "${symbol_dollar}1" in
|
||||
build_start)
|
||||
down
|
||||
build
|
||||
start
|
||||
tail
|
||||
;;
|
||||
build_start_it_supported)
|
||||
down
|
||||
build
|
||||
prepare_test
|
||||
start
|
||||
tail
|
||||
;;
|
||||
start)
|
||||
start
|
||||
tail
|
||||
;;
|
||||
stop)
|
||||
down
|
||||
;;
|
||||
purge)
|
||||
down
|
||||
purge
|
||||
;;
|
||||
tail)
|
||||
tail
|
||||
;;
|
||||
build_test)
|
||||
down
|
||||
build
|
||||
prepare_test
|
||||
start
|
||||
test
|
||||
tail_all
|
||||
down
|
||||
;;
|
||||
test)
|
||||
test
|
||||
;;
|
||||
*)
|
||||
echo "Usage: ${symbol_dollar}0 {build_start|build_start_it_supported|start|stop|purge|tail|build_test|test}"
|
||||
esac
|
@@ -3,6 +3,19 @@
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3 http://maven.apache.org/xsd/assembly-1.1.3.xsd">
|
||||
|
||||
<!--
|
||||
Note that the Module dependency specified in the configuration section for the Alfresco Maven Plugin
|
||||
needs to be set to amp if any 3rd party libs should be applied by MMT:
|
||||
`
|
||||
<platformModules>
|
||||
<moduleDependency>
|
||||
<groupId>${project.groupId}</groupId>
|
||||
<artifactId>some-platform-jar</artifactId>
|
||||
<version>${project.version}</version>
|
||||
<type>amp</type>
|
||||
</moduleDependency>
|
||||
-->
|
||||
|
||||
<id>build-amp-file</id>
|
||||
|
||||
<formats>
|
||||
@@ -12,12 +25,38 @@
|
||||
<includeBaseDirectory>false</includeBaseDirectory>
|
||||
|
||||
<files>
|
||||
<!-- Filter module.properties and put at top level in the AMP -->
|
||||
<file>
|
||||
<source>src/main/resources/alfresco/module/${project.artifactId}/module.properties</source>
|
||||
<filtered>true</filtered>
|
||||
</file>
|
||||
<!-- Include AMP -> WAR mapping file (needed for custom mappings) -->
|
||||
<file>
|
||||
<source>src/main/assembly/file-mapping.properties</source>
|
||||
<filtered>false</filtered>
|
||||
</file>
|
||||
<!-- Add module-specific log4j.properties configuration at top level in the AMP -->
|
||||
<file>
|
||||
<source>src/main/resources/alfresco/module/${project.artifactId}/log4j.properties</source>
|
||||
<filtered>false</filtered>
|
||||
</file>
|
||||
</files>
|
||||
|
||||
<fileSets>
|
||||
<!-- Anything in the assembly/web directory will end up in the /web directory in the AMP -->
|
||||
<fileSet>
|
||||
<directory>src/main/assembly/web</directory>
|
||||
<outputDirectory>web</outputDirectory>
|
||||
<filtered>true</filtered> <!-- Will filter files and substitute POM props such as for example ${project.name} -->
|
||||
<excludes>
|
||||
<exclude>README.md</exclude>
|
||||
</excludes>
|
||||
</fileSet>
|
||||
</fileSets>
|
||||
|
||||
<!-- Include the project artifact (JAR) in the /lib directory in the AMP, and any 3rd party libraries (JARs)
|
||||
used by the customization.
|
||||
-->
|
||||
<dependencySets>
|
||||
<dependencySet>
|
||||
<outputDirectory>lib</outputDirectory>
|
||||
|
@@ -0,0 +1,27 @@
|
||||
# Custom AMP to WAR location mappings
|
||||
|
||||
#
|
||||
# The following property can be used to include the standard set of mappings.
|
||||
# The contents of this file will override any defaults. The default is
|
||||
# 'true', i.e. the default mappings will be augmented or modified by values in
|
||||
# this file.
|
||||
#
|
||||
# Default mappings are:
|
||||
#
|
||||
# /config=/WEB-INF/classes
|
||||
# /lib=/WEB-INF/lib
|
||||
# /licenses=/WEB-INF/licenses
|
||||
# /web/jsp=/jsp
|
||||
# /web/css=/css
|
||||
# /web/images=/images
|
||||
# /web/scripts=/scripts
|
||||
# /web/php=/php
|
||||
#
|
||||
include.default=true
|
||||
|
||||
#
|
||||
# Custom mappings. If 'include.default' is false, then this is the complete set.
|
||||
# Map /web to / in AMP so we can override things like favicon.ico
|
||||
#
|
||||
/web=/
|
||||
|
@@ -0,0 +1,22 @@
|
||||
# Web resources that should override out-of-the-box files
|
||||
|
||||
Put here any web resources that should override out-of-the-box
|
||||
web resources, such as favicon.ico. They will then end up in the
|
||||
*/web* directory in the AMP, and applied to the WAR, and override
|
||||
any existing web resources in the Alfresco.WAR.
|
||||
|
||||
**Note**. Module dependency needs to be set to amp for the web resources to be applied by MMT:
|
||||
|
||||
`
|
||||
<moduleDependency>
|
||||
<groupId>${project.groupId}</groupId>
|
||||
<artifactId>some-platform-jar</artifactId>
|
||||
<version>${project.version}</version>
|
||||
<type>amp</type>
|
||||
</moduleDependency>
|
||||
`
|
||||
|
||||
**Important**. New web resources should not be located here, but instead
|
||||
in the usual place in the *src/main/resources/META-INF/resources* directory.
|
||||
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user