-
-
Notifications
You must be signed in to change notification settings - Fork 1
/
snapcraft.yaml
119 lines (101 loc) · 3.66 KB
/
snapcraft.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
# snapcraft.yaml - builds a Snap package of the Apache Maven build tool
# Copyright 2021-2024 John Neffenger
#
# 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
#
# 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.
name: strictly-maven
title: Strictly Maven
summary: Apache Maven™ in a strictly-confined snap
description: |
Apache Maven is a build automation tool used primarily for Java
projects. Maven can also be used to build and manage projects
written in C#, Ruby, Scala, and other languages. Maven projects
are configured by a file with a Project Object Model (pom.xml).
This package provides the latest release of Maven built directly
from its source code on GitHub. If the OpenJDK Snap package is
also installed, this package connects to it automatically for the
location of its Java Development Kit.
This Snap package is strictly confined, running in complete isolation
with only limited access to your system. For important information
about running Maven in a confined environment, see the README file
for this package on GitHub:
https://github.com/jgneff/strictly-maven
This is a convenience binary of the Maven tool and not a release
by the Apache Software Foundation. For official releases, see:
https://maven.apache.org
Apache Maven and the Maven logo are either registered trademarks or
trademarks of the Apache Software Foundation in the United States
and/or other countries.
version: '3.9.9'
license: Apache-2.0
base: core20
grade: stable
confinement: strict
architectures:
- build-on: amd64
run-on: [amd64, arm64, armhf, i386, ppc64el, s390x]
slots:
maven-3-1804:
interface: content
read: [$SNAP/maven]
plugs:
jdk-22-1804:
interface: content
target: $SNAP/jdk
default-provider: openjdk
apps:
strictly-maven:
command: bin/maven.sh
plugs: [home, network]
parts:
dump:
plugin: dump
source: .
source-type: local
stage: [bin, conf]
maven:
plugin: nil
source: https://github.com/apache/maven.git
source-type: git
source-tag: maven-$SNAPCRAFT_PROJECT_VERSION
source-depth: 1
build-packages:
- openjdk-17-jre-headless
- maven
override-build: |
# Gets the host and port from a proxy URL
# $1 = the proxy URL, such as "http://10.10.10.1:8222/"
getproxy () {
# Parses URL with Bash or Dash shell parameter expansion
tail=${1#http*://}
head=${tail%%/*}
host=${head%:*}
port=${head##*:}
}
# Sets Java networking properties when using a proxy server
proxies=""
if [ -n "${http_proxy:-}" ]; then
getproxy "$http_proxy"
proxies="-Dhttp.proxyHost=$host -Dhttp.proxyPort=$port"
fi
if [ -n "${https_proxy:-}" ]; then
getproxy "$https_proxy"
proxies="$proxies -Dhttps.proxyHost=$host -Dhttps.proxyPort=$port"
fi
# Builds Maven
export MAVEN_OPTS="$proxies"
mvn --batch-mode --strict-checksums \
--define distributionTargetDir="$SNAPCRAFT_PART_INSTALL/maven" \
--quiet --show-version package
# Patches the default location of the local repository
cp "$SNAPCRAFT_PROJECT_DIR/conf/settings-global.xml" \
"$SNAPCRAFT_PART_INSTALL/maven/conf/settings.xml"