| @@ -0,0 +1,17 @@ | |||||
| #!/bin/bash | |||||
| baseDir="/home/somuns/ci4s" | |||||
| cd $baseDir && mvn clean install | |||||
| #cd ${baseDir}/ruoyi-modules && mvn install | |||||
| if [ $? -ne 0 ]; then | |||||
| echo "Failed to build ruoyi-modules" | |||||
| exit 1 | |||||
| fi | |||||
| @@ -0,0 +1,21 @@ | |||||
| #!/bin/bash | |||||
| baseDir="/home/somuns/ci4s" | |||||
| cd ${baseDir}/react-ui | |||||
| npm install | |||||
| if [ $? -ne 0 ]; then | |||||
| echo "Failed to install npm depend package" | |||||
| exit 1 | |||||
| fi | |||||
| npm run build | |||||
| if [ $? -ne 0 ]; then | |||||
| echo "Failed to build react-ui" | |||||
| exit 1 | |||||
| fi | |||||
| @@ -0,0 +1,54 @@ | |||||
| #!/bin/bash | |||||
| #登录到172.20.32.185 环境执行 | |||||
| baseDir="/home/somuns/ci4s" | |||||
| cd ${baseDir} | |||||
| #拉取master分支的最新代码 | |||||
| git pull | |||||
| if [ $? -ne 0 ]; then | |||||
| echo "拉取代码失败,请检查网络或联系管理员!" | |||||
| exit 1 | |||||
| fi | |||||
| if [ -d "${baseDir}/react-ui/dist" ]; then | |||||
| rm -rf ${baseDir}/react-ui/dist | |||||
| fi | |||||
| if [ -f "${baseDir}/ruoyi-modules/management-platform/target/management-platform.jar" ];then | |||||
| rm -rf ${baseDir}/ruoyi-modules/management-platform/target/management-platform.jar | |||||
| fi | |||||
| # 编译java | |||||
| docker run -v ${baseDir}:${baseDir} -v /home/maven:/home/maven -e http_proxy=http://172.20.32.253:3128 -e https_proxy=http://172.20.32.253:3128 172.20.32.187/ci4s/java-build:jdk8-mvn3.6 ${baseDir}/k8s/build-java.sh | |||||
| if [ $? -ne 0 ]; then | |||||
| echo "编译失败,请检查代码!" | |||||
| exit 1 | |||||
| fi | |||||
| # 编译node | |||||
| docker run -v ${baseDir}:${baseDir} -e http_proxy=http://172.20.32.253:3128 -e https_proxy=http://172.20.32.253:3128 172.20.32.187/ci4s/node:16.16.0 ${baseDir}/k8s/build-node.sh | |||||
| if [ $? -ne 0 ]; then | |||||
| echo "编译失败,请检查代码!" | |||||
| exit 1 | |||||
| fi | |||||
| mkdir -p ${baseDir}/k8s/dockerfiles/jar | |||||
| mkdir -p ${baseDir}/k8s/dockerfiles/html | |||||
| # 复制jar包 | |||||
| cp -rf ${baseDir}/ruoyi-modules/management-platform/target/management-platform.jar ${baseDir}/k8s/dockerfiles/jar/management-platform.jar | |||||
| if [ $? -ne 0 ]; then | |||||
| echo "复制jar包失败,请检查代码!" | |||||
| exit 1 | |||||
| fi | |||||
| # 复制前端文件 | |||||
| cp -rf ${baseDir}/react-ui/dist/ ${baseDir}/k8s/dockerfiles/html | |||||
| if [ $? -ne 0 ]; then | |||||
| echo "复制html文件失败,请检查代码!" | |||||
| exit 1 | |||||
| fi | |||||
| sh ${baseDir}/k8s/build_and_deploy_front_managenent.sh | |||||
| @@ -0,0 +1,68 @@ | |||||
| #!/bin/bash | |||||
| bastDir=/home/somuns/ci4s | |||||
| cd ${bastDir}/k8s/dockerfiles | |||||
| mkdir -p ${bastDir}/k8s/template-yaml/deploy | |||||
| tag=$(date +'%Y%m%d%H%M') | |||||
| managent=172.20.32.187/ci4s/managent:${tag} | |||||
| front=172.20.32.187/ci4s/ci4s-front:${tag} | |||||
| docker build -t ${managent} -f managent-dockerfile . | |||||
| if [ "$?" -ne "0" ];then | |||||
| echo "buid ${managent} image fail" | |||||
| exit 1 | |||||
| fi | |||||
| docker build -t ${front} -f nginx-dockerfile . | |||||
| if [ "$?" -ne "0" ];then | |||||
| echo "buid ${front} image fail" | |||||
| exit 2 | |||||
| fi | |||||
| cd ${bastDir}/k8s/template-yaml | |||||
| cp -rf k8s-12front.yaml deploy/ | |||||
| cp -rf k8s-7management.yaml deploy/ | |||||
| cd deploy/ | |||||
| #镜像替换 | |||||
| sed -i "s#managenent-image#${managent}#g" k8s-7management.yaml | |||||
| if [ "$?" -ne "0" ];then | |||||
| echo "replace ${managent} image fail" | |||||
| exit 3 | |||||
| fi | |||||
| sed -i "s#front-image#${front}#g" k8s-12front.yaml | |||||
| if [ "$?" -ne "0" ];then | |||||
| echo "replace ${front} image fail" | |||||
| exit 4 | |||||
| fi | |||||
| docker push ${managent} | |||||
| docker push ${front} | |||||
| kubectl apply -n argo -f k8s-7management.yaml | |||||
| if [ "$?" -ne "0" ];then | |||||
| echo "deploy ${managent} image fail" | |||||
| exit 5 | |||||
| fi | |||||
| kubectl apply -n argo -f k8s-12front.yaml | |||||
| if [ "$?" -ne "0" ];then | |||||
| echo "buid ${front} image fail" | |||||
| exit 6 | |||||
| fi | |||||
| @@ -0,0 +1,127 @@ | |||||
| #!/bin/bash | |||||
| # 记录开始时间 | |||||
| start=$(date +%s) | |||||
| # 默认参数 | |||||
| service="manage-front" | |||||
| env="dev" | |||||
| # 解析命令行参数 | |||||
| while getopts "s:e:" opt; do | |||||
| case $opt in | |||||
| s) service=$OPTARG ;; | |||||
| e) env=$OPTARG ;; | |||||
| \?) echo "Invalid option -$OPTARG" >&2; exit 1 ;; | |||||
| esac | |||||
| done | |||||
| echo "deploy service: $service, env: $env" | |||||
| # 根据环境设置 IP 地址 | |||||
| if [ "$env" == "dev" ]; then | |||||
| remote_ip="172.20.32.181" | |||||
| elif [ "$env" == "test" ]; then | |||||
| remote_ip="172.20.32.185" | |||||
| else | |||||
| echo "Invalid environment - $env" | |||||
| exit 1 | |||||
| fi | |||||
| baseDir=/home/somuns/ci4s | |||||
| cd ${baseDir}/k8s/dockerfiles | |||||
| mkdir -p ${baseDir}/k8s/template-yaml/deploy | |||||
| tag=$(date +'%Y%m%d%H%M') | |||||
| managent=172.20.32.187/ci4s/managent:${tag} | |||||
| front=172.20.32.187/ci4s/ci4s-front:${tag} | |||||
| remote_deploy_dir=/home/deploy/manage-platform | |||||
| manager_yaml=k8s-7management.yaml | |||||
| front_yaml=k8s-12front.yaml | |||||
| # 构建 manage 镜像 | |||||
| if [ "$service" == "manage-front" ] || [ "$service" == "manage" ]; then | |||||
| cd ${baseDir}/k8s/dockerfiles | |||||
| docker build -t ${managent} -f managent-dockerfile . | |||||
| if [ "$?" -ne "0" ]; then | |||||
| echo "build ${managent} image fail" | |||||
| exit 1 | |||||
| fi | |||||
| cd ${baseDir}/k8s/template-yaml | |||||
| # 复制 YAML 文件 | |||||
| cp -rf ${manager_yaml} deploy/ | |||||
| # 镜像替换 | |||||
| cd deploy/ | |||||
| sed -i "s#managenent-image#${managent}#g" ${manager_yaml} | |||||
| if [ "$?" -ne "0" ];then | |||||
| echo "replace ${managent} image fail" | |||||
| exit 3 | |||||
| fi | |||||
| # 推送镜像 | |||||
| docker push ${managent} | |||||
| # 部署服务 | |||||
| ssh root@$remote_ip "mkdir -p ${remote_deploy_dir} && if [ -f ${remote_deploy_dir}/${manager_yaml} ]; then mv ${remote_deploy_dir}/${manager_yaml} ${remote_deploy_dir}/k8s-7management.yaml.bak; fi" | |||||
| scp ${baseDir}/k8s/template-yaml/deploy/${manager_yaml} root@$remote_ip:${remote_deploy_dir}/${manager_yaml} | |||||
| if [ $? -ne 0 ]; then | |||||
| echo "Failed to copy ${managent} yaml file" | |||||
| exit 1 | |||||
| else | |||||
| echo "Successfully copied ${managent} yaml file" | |||||
| fi | |||||
| ssh root@$remote_ip "kubectl apply -n argo -f ${remote_deploy_dir}/${manager_yaml}" | |||||
| if [ $? -ne 0 ]; then | |||||
| echo "Failed to deploy ${managent} image" | |||||
| exit 1 | |||||
| else | |||||
| echo "Successfully deployed ${managent} image" | |||||
| fi | |||||
| fi | |||||
| # 构建 front 镜像 | |||||
| if [ "$service" == "manage-front" ] || [ "$service" == "front" ]; then | |||||
| cd ${baseDir}/k8s/dockerfiles | |||||
| docker build -t ${front} -f nginx-dockerfile . | |||||
| if [ "$?" -ne "0" ];then | |||||
| echo "build ${front} image fail" | |||||
| exit 2 | |||||
| fi | |||||
| # 复制 YAML 文件 | |||||
| cd ${baseDir}/k8s/template-yaml | |||||
| cp -rf ${front_yaml} deploy/ | |||||
| # 镜像替换 | |||||
| cd deploy/ | |||||
| sed -i "s#front-image#${front}#g" ${front_yaml} | |||||
| if [ "$?" -ne "0" ];then | |||||
| echo "replace ${front} image fail" | |||||
| exit 4 | |||||
| fi | |||||
| # 镜像推送 | |||||
| docker push ${front} | |||||
| #部署服务 | |||||
| ssh root@$remote_ip "mkdir -p ${remote_deploy_dir} && if [ -f ${remote_deploy_dir}/${front_yaml} ]; then mv ${remote_deploy_dir}/${front_yaml} ${remote_deploy_dir}/k8s-12front.yaml.bak; fi" | |||||
| scp ${baseDir}/k8s/template-yaml/deploy/${front_yaml} root@$remote_ip:${remote_deploy_dir}/${front_yaml} | |||||
| if [ $? -ne 0 ]; then | |||||
| echo "Failed to copy ${managent} yaml file" | |||||
| exit 1 | |||||
| else | |||||
| echo "Successfully copied ${managent} yaml file" | |||||
| fi | |||||
| ssh root@$remote_ip "kubectl apply -n argo -f ${remote_deploy_dir}/${front_yaml}" | |||||
| if [ $? -ne 0 ]; then | |||||
| echo "Failed to deploy ${front} image" | |||||
| exit 1 | |||||
| else | |||||
| echo "Successfully deployed ${front} image" | |||||
| fi | |||||
| fi | |||||
| # 记录结束时间 | |||||
| end=$(date +%s) | |||||
| echo "部署成功, 耗时: $((end-start))秒" | |||||
| @@ -0,0 +1,113 @@ | |||||
| #!/bin/bash | |||||
| #记录开始时间 | |||||
| start=$(date +%s) | |||||
| # 默认参数 | |||||
| branch="master" | |||||
| service="manage-front" | |||||
| env="dev" | |||||
| # | |||||
| show_help() { | |||||
| echo "Usage: $0 [-b branch] [-s service] [-e environment]" | |||||
| echo | |||||
| echo "Options:" | |||||
| echo " -b Branch to deploy" | |||||
| echo " -s Service to deploy (manage-front, manage, front)" | |||||
| echo " -e Environment (e.g., dev, prod)" | |||||
| echo " -h Show this help message" | |||||
| } | |||||
| # 解析命令行选项 | |||||
| while getopts "b:s:e:h" opt; do | |||||
| case $opt in | |||||
| b) branch=$OPTARG ;; | |||||
| s) service=$OPTARG ;; | |||||
| e) env=$OPTARG ;; | |||||
| h) show_help; exit 0 ;; | |||||
| \?) echo "Invalid option -$OPTARG" >&2; show_help; exit 1 ;; | |||||
| esac | |||||
| done | |||||
| echo "branch: $branch" | |||||
| echo "service: $service" | |||||
| echo "env: $env" | |||||
| # 登录到目标环境 | |||||
| baseDir="/home/somuns/ci4s" | |||||
| cd ${baseDir} | |||||
| # 拉取指定分支的最新代码 | |||||
| echo "Checking out and pulling branch $branch..." | |||||
| git checkout $branch | |||||
| if [ $? -ne 0 ]; then | |||||
| echo "切换到分支 $branch 失败,请检查分支名称是否正确!" | |||||
| exit 1 | |||||
| fi | |||||
| git pull origin $branch | |||||
| if [ $? -ne 0 ]; then | |||||
| echo "拉取代码失败,请检查网络或联系管理员!" | |||||
| exit 1 | |||||
| fi | |||||
| # 创建目录 | |||||
| mkdir -p ${baseDir}/k8s/dockerfiles/jar | |||||
| mkdir -p ${baseDir}/k8s/dockerfiles/html | |||||
| if [ "$service" == "manage-front" ] || [ "$service" == "front" ]; then | |||||
| # 清理前端构建文件 | |||||
| if [ -d "${baseDir}/react-ui/dist" ]; then | |||||
| rm -rf ${baseDir}/react-ui/dist | |||||
| fi | |||||
| # 编译前端 | |||||
| docker run -v ${baseDir}:${baseDir} \ | |||||
| -e http_proxy=http://172.20.32.253:3128 -e https_proxy=http://172.20.32.253:3128 \ | |||||
| 172.20.32.187/ci4s/node:16.16.0 ${baseDir}/k8s/build-node.sh | |||||
| if [ $? -ne 0 ]; then | |||||
| echo "编译失败,请检查代码!" | |||||
| exit 1 | |||||
| fi | |||||
| # 复制前端文件 | |||||
| cp -rf ${baseDir}/react-ui/dist/ ${baseDir}/k8s/dockerfiles/html | |||||
| if [ $? -ne 0 ]; then | |||||
| echo "复制html文件失败,请检查代码!" | |||||
| exit 1 | |||||
| fi | |||||
| fi | |||||
| if [ "$service" == "manage-front" ] || [ "$service" == "manage" ]; then | |||||
| # 清理java构建文件 | |||||
| if [ -f "${baseDir}/ruoyi-modules/management-platform/target/management-platform.jar" ]; then | |||||
| rm -rf ${baseDir}/ruoyi-modules/management-platform/target/management-platform.jar | |||||
| fi | |||||
| # 编译java | |||||
| docker run -v ${baseDir}:${baseDir} -v /home/maven:/home/maven \ | |||||
| -e http_proxy=http://172.20.32.253:3128 -e https_proxy=http://172.20.32.253:3128 \ | |||||
| 172.20.32.187/ci4s/build:v1 ${baseDir}/k8s/build-java.sh | |||||
| if [ $? -ne 0 ]; then | |||||
| echo "编译失败,请检查代码!" | |||||
| exit 1 | |||||
| fi | |||||
| # 复制jar包 | |||||
| cp -rf ${baseDir}/ruoyi-modules/management-platform/target/management-platform.jar ${baseDir}/k8s/dockerfiles/jar/management-platform.jar | |||||
| if [ $? -ne 0 ]; then | |||||
| echo "复制jar包失败,请检查代码!" | |||||
| exit 1 | |||||
| fi | |||||
| fi | |||||
| # 构建和部署 | |||||
| sh ${baseDir}/k8s/new_deploy.sh -s $service -e $env | |||||
| # 记录结束时间 | |||||
| end=$(date +%s) | |||||
| #计算运行时间 | |||||
| runtime=$((end-start)) | |||||
| echo "编译和发布成功,耗时:$runtime 秒" | |||||
| @@ -0,0 +1,274 @@ | |||||
| <?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. | |||||
| --> | |||||
| <!-- | |||||
| | This is the configuration file for Maven. It can be specified at two levels: | |||||
| | | |||||
| | 1. User Level. This settings.xml file provides configuration for a single user, | |||||
| | and is normally provided in ${user.home}/.m2/settings.xml. | |||||
| | | |||||
| | NOTE: This location can be overridden with the CLI option: | |||||
| | | |||||
| | -s /path/to/user/settings.xml | |||||
| | | |||||
| | 2. Global Level. This settings.xml file provides configuration for all Maven | |||||
| | users on a machine (assuming they're all using the same Maven | |||||
| | installation). It's normally provided in | |||||
| | ${maven.conf}/settings.xml. | |||||
| | | |||||
| | NOTE: This location can be overridden with the CLI option: | |||||
| | | |||||
| | -gs /path/to/global/settings.xml | |||||
| | | |||||
| | The sections in this sample file are intended to give you a running start at | |||||
| | getting the most out of your Maven installation. Where appropriate, the default | |||||
| | values (values used when the setting is not specified) are provided. | |||||
| | | |||||
| |--> | |||||
| <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"> | |||||
| <!-- localRepository | |||||
| | The path to the local repository maven will use to store artifacts. | |||||
| | | |||||
| | Default: ${user.home}/.m2/repository | |||||
| <localRepository>/path/to/local/repo</localRepository> | |||||
| --> | |||||
| <localRepository>/home/maven/repository</localRepository> | |||||
| <!-- interactiveMode | |||||
| | This will determine whether maven prompts you when it needs input. If set to false, | |||||
| | maven will use a sensible default value, perhaps based on some other setting, for | |||||
| | the parameter in question. | |||||
| | | |||||
| | Default: true | |||||
| <interactiveMode>true</interactiveMode> | |||||
| --> | |||||
| <!-- offline | |||||
| | Determines whether maven should attempt to connect to the network when executing a build. | |||||
| | This will have an effect on artifact downloads, artifact deployment, and others. | |||||
| | | |||||
| | Default: false | |||||
| <offline>false</offline> | |||||
| --> | |||||
| <!-- pluginGroups | |||||
| | This is a list of additional group identifiers that will be searched when resolving plugins by their prefix, i.e. | |||||
| | when invoking a command line like "mvn prefix:goal". Maven will automatically add the group identifiers | |||||
| | "org.apache.maven.plugins" and "org.codehaus.mojo" if these are not already contained in the list. | |||||
| |--> | |||||
| <pluginGroups> | |||||
| <!-- pluginGroup | |||||
| | Specifies a further group identifier to use for plugin lookup. | |||||
| <pluginGroup>com.your.plugins</pluginGroup> | |||||
| --> | |||||
| </pluginGroups> | |||||
| <!-- proxies | |||||
| | This is a list of proxies which can be used on this machine to connect to the network. | |||||
| | Unless otherwise specified (by system property or command-line switch), the first proxy | |||||
| | specification in this list marked as active will be used. | |||||
| |--> | |||||
| <proxies> | |||||
| <!-- proxy | |||||
| | Specification for one proxy, to be used in connecting to the network. | |||||
| | | |||||
| <proxy> | |||||
| <id>optional</id> | |||||
| <active>true</active> | |||||
| <protocol>http</protocol> | |||||
| <username>proxyuser</username> | |||||
| <password>proxypass</password> | |||||
| <host>proxy.host.net</host> | |||||
| <port>80</port> | |||||
| <nonProxyHosts>local.net|some.host.com</nonProxyHosts> | |||||
| </proxy> | |||||
| --> | |||||
| </proxies> | |||||
| <!-- servers | |||||
| | This is a list of authentication profiles, keyed by the server-id used within the system. | |||||
| | Authentication profiles can be used whenever maven must make a connection to a remote server. | |||||
| |--> | |||||
| <servers> | |||||
| <!-- server | |||||
| | Specifies the authentication information to use when connecting to a particular server, identified by | |||||
| | a unique name within the system (referred to by the 'id' attribute below). | |||||
| | | |||||
| | NOTE: You should either specify username/password OR privateKey/passphrase, since these pairings are | |||||
| | used together. | |||||
| | | |||||
| <server> | |||||
| <id>deploymentRepo</id> | |||||
| <username>repouser</username> | |||||
| <password>repopwd</password> | |||||
| </server> | |||||
| --> | |||||
| <!-- Another sample, using keys to authenticate. | |||||
| <server> | |||||
| <id>siteServer</id> | |||||
| <privateKey>/path/to/private/key</privateKey> | |||||
| <passphrase>optional; leave empty if not used.</passphrase> | |||||
| </server> | |||||
| --> | |||||
| </servers> | |||||
| <!-- mirrors | |||||
| | This is a list of mirrors to be used in downloading artifacts from remote repositories. | |||||
| | | |||||
| | It works like this: a POM may declare a repository to use in resolving certain artifacts. | |||||
| | However, this repository may have problems with heavy traffic at times, so people have mirrored | |||||
| | it to several places. | |||||
| | | |||||
| | That repository definition will have a unique id, so we can create a mirror reference for that | |||||
| | repository, to be used as an alternate download site. The mirror site will be the preferred | |||||
| | server for that repository. | |||||
| |--> | |||||
| <mirrors> | |||||
| <!-- mirror | |||||
| | Specifies a repository mirror site to use instead of a given repository. The repository that | |||||
| | this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used | |||||
| | for inheritance and direct lookup purposes, and must be unique across the set of mirrors. | |||||
| | | |||||
| <mirror> | |||||
| <id>mirrorId</id> | |||||
| <mirrorOf>repositoryId</mirrorOf> | |||||
| <name>Human Readable Name for this Mirror.</name> | |||||
| <url>http://my.repository.com/repo/path</url> | |||||
| </mirror> | |||||
| --> | |||||
| <mirror> | |||||
| <id>alimaven</id> | |||||
| <name>aliyun maven</name> | |||||
| <url>http://maven.aliyun.com/nexus/content/groups/public/</url> | |||||
| <mirrorOf>central</mirrorOf> | |||||
| </mirror> | |||||
| </mirrors> | |||||
| <!-- profiles | |||||
| | This is a list of profiles which can be activated in a variety of ways, and which can modify | |||||
| | the build process. Profiles provided in the settings.xml are intended to provide local machine- | |||||
| | specific paths and repository locations which allow the build to work in the local environment. | |||||
| | | |||||
| | For example, if you have an integration testing plugin - like cactus - that needs to know where | |||||
| | your Tomcat instance is installed, you can provide a variable here such that the variable is | |||||
| | dereferenced during the build process to configure the cactus plugin. | |||||
| | | |||||
| | As noted above, profiles can be activated in a variety of ways. One way - the activeProfiles | |||||
| | section of this document (settings.xml) - will be discussed later. Another way essentially | |||||
| | relies on the detection of a system property, either matching a particular value for the property, | |||||
| | or merely testing its existence. Profiles can also be activated by JDK version prefix, where a | |||||
| | value of '1.4' might activate a profile when the build is executed on a JDK version of '1.4.2_07'. | |||||
| | Finally, the list of active profiles can be specified directly from the command line. | |||||
| | | |||||
| | NOTE: For profiles defined in the settings.xml, you are restricted to specifying only artifact | |||||
| | repositories, plugin repositories, and free-form properties to be used as configuration | |||||
| | variables for plugins in the POM. | |||||
| | | |||||
| |--> | |||||
| <profiles> | |||||
| <!-- profile | |||||
| | Specifies a set of introductions to the build process, to be activated using one or more of the | |||||
| | mechanisms described above. For inheritance purposes, and to activate profiles via <activatedProfiles/> | |||||
| | or the command line, profiles have to have an ID that is unique. | |||||
| | | |||||
| | An encouraged best practice for profile identification is to use a consistent naming convention | |||||
| | for profiles, such as 'env-dev', 'env-test', 'env-production', 'user-jdcasey', 'user-brett', etc. | |||||
| | This will make it more intuitive to understand what the set of introduced profiles is attempting | |||||
| | to accomplish, particularly when you only have a list of profile id's for debug. | |||||
| | | |||||
| | This profile example uses the JDK version to trigger activation, and provides a JDK-specific repo. | |||||
| <profile> | |||||
| <id>jdk-1.4</id> | |||||
| <activation> | |||||
| <jdk>1.4</jdk> | |||||
| </activation> | |||||
| <repositories> | |||||
| <repository> | |||||
| <id>jdk14</id> | |||||
| <name>Repository for JDK 1.4 builds</name> | |||||
| <url>http://www.myhost.com/maven/jdk14</url> | |||||
| <layout>default</layout> | |||||
| <snapshotPolicy>always</snapshotPolicy> | |||||
| </repository> | |||||
| </repositories> | |||||
| </profile> | |||||
| --> | |||||
| <!-- 在已有的profiles标签中添加profile标签,限定maven项目默认的jdk版本 --> | |||||
| <profile> | |||||
| <id>myjdk</id> | |||||
| <activation> | |||||
| <activeByDefault>true</activeByDefault> | |||||
| <jdk>1.8</jdk> | |||||
| </activation> | |||||
| <properties> | |||||
| <maven.compiler.source>1.8</maven.compiler.source> | |||||
| <maven.compiler.target>1.8</maven.compiler.target> | |||||
| <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion> | |||||
| </properties> | |||||
| </profile> | |||||
| <!-- | |||||
| | Here is another profile, activated by the system property 'target-env' with a value of 'dev', | |||||
| | which provides a specific path to the Tomcat instance. To use this, your plugin configuration | |||||
| | might hypothetically look like: | |||||
| | | |||||
| | ... | |||||
| | <plugin> | |||||
| | <groupId>org.myco.myplugins</groupId> | |||||
| | <artifactId>myplugin</artifactId> | |||||
| | | |||||
| | <configuration> | |||||
| | <tomcatLocation>${tomcatPath}</tomcatLocation> | |||||
| | </configuration> | |||||
| | </plugin> | |||||
| | ... | |||||
| | | |||||
| | NOTE: If you just wanted to inject this configuration whenever someone set 'target-env' to | |||||
| | anything, you could just leave off the <value/> inside the activation-property. | |||||
| | | |||||
| <profile> | |||||
| <id>env-dev</id> | |||||
| <activation> | |||||
| <property> | |||||
| <name>target-env</name> | |||||
| <value>dev</value> | |||||
| </property> | |||||
| </activation> | |||||
| <properties> | |||||
| <tomcatPath>/path/to/tomcat/instance</tomcatPath> | |||||
| </properties> | |||||
| </profile> | |||||
| --> | |||||
| </profiles> | |||||
| <!-- activeProfiles | |||||
| | List of profiles that are active for all builds. | |||||
| | | |||||
| <activeProfiles> | |||||
| <activeProfile>alwaysActiveProfile</activeProfile> | |||||
| <activeProfile>anotherAlwaysActiveProfile</activeProfile> | |||||
| </activeProfiles> | |||||
| --> | |||||
| <!-- 让增加的 profile生效 --> | |||||
| <activeProfiles> | |||||
| <activeProfile>myjdk</activeProfile> | |||||
| </activeProfiles> | |||||
| </settings> | |||||
| @@ -0,0 +1,257 @@ | |||||
| <?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. | |||||
| --> | |||||
| <!-- | |||||
| | This is the configuration file for Maven. It can be specified at two levels: | |||||
| | | |||||
| | 1. User Level. This settings.xml file provides configuration for a single user, | |||||
| | and is normally provided in ${user.home}/.m2/settings.xml. | |||||
| | | |||||
| | NOTE: This location can be overridden with the CLI option: | |||||
| | | |||||
| | -s /path/to/user/settings.xml | |||||
| | | |||||
| | 2. Global Level. This settings.xml file provides configuration for all Maven | |||||
| | users on a machine (assuming they're all using the same Maven | |||||
| | installation). It's normally provided in | |||||
| | ${maven.conf}/settings.xml. | |||||
| | | |||||
| | NOTE: This location can be overridden with the CLI option: | |||||
| | | |||||
| | -gs /path/to/global/settings.xml | |||||
| | | |||||
| | The sections in this sample file are intended to give you a running start at | |||||
| | getting the most out of your Maven installation. Where appropriate, the default | |||||
| | values (values used when the setting is not specified) are provided. | |||||
| | | |||||
| |--> | |||||
| <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"> | |||||
| <!-- localRepository | |||||
| | The path to the local repository maven will use to store artifacts. | |||||
| | | |||||
| | Default: ${user.home}/.m2/repository | |||||
| <localRepository>/path/to/local/repo</localRepository> | |||||
| --> | |||||
| <!-- interactiveMode | |||||
| | This will determine whether maven prompts you when it needs input. If set to false, | |||||
| | maven will use a sensible default value, perhaps based on some other setting, for | |||||
| | the parameter in question. | |||||
| | | |||||
| | Default: true | |||||
| <interactiveMode>true</interactiveMode> | |||||
| --> | |||||
| <!-- offline | |||||
| | Determines whether maven should attempt to connect to the network when executing a build. | |||||
| | This will have an effect on artifact downloads, artifact deployment, and others. | |||||
| | | |||||
| | Default: false | |||||
| <offline>false</offline> | |||||
| --> | |||||
| <!-- pluginGroups | |||||
| | This is a list of additional group identifiers that will be searched when resolving plugins by their prefix, i.e. | |||||
| | when invoking a command line like "mvn prefix:goal". Maven will automatically add the group identifiers | |||||
| | "org.apache.maven.plugins" and "org.codehaus.mojo" if these are not already contained in the list. | |||||
| |--> | |||||
| <pluginGroups> | |||||
| <!-- pluginGroup | |||||
| | Specifies a further group identifier to use for plugin lookup. | |||||
| <pluginGroup>com.your.plugins</pluginGroup> | |||||
| --> | |||||
| </pluginGroups> | |||||
| <!-- proxies | |||||
| | This is a list of proxies which can be used on this machine to connect to the network. | |||||
| | Unless otherwise specified (by system property or command-line switch), the first proxy | |||||
| | specification in this list marked as active will be used. | |||||
| |--> | |||||
| <proxies> | |||||
| <!-- proxy | |||||
| | Specification for one proxy, to be used in connecting to the network. | |||||
| | | |||||
| <proxy> | |||||
| <id>optional</id> | |||||
| <active>true</active> | |||||
| <protocol>http</protocol> | |||||
| <username>proxyuser</username> | |||||
| <password>proxypass</password> | |||||
| <host>proxy.host.net</host> | |||||
| <port>80</port> | |||||
| <nonProxyHosts>local.net|some.host.com</nonProxyHosts> | |||||
| </proxy> | |||||
| --> | |||||
| </proxies> | |||||
| <!-- servers | |||||
| | This is a list of authentication profiles, keyed by the server-id used within the system. | |||||
| | Authentication profiles can be used whenever maven must make a connection to a remote server. | |||||
| |--> | |||||
| <servers> | |||||
| <!-- server | |||||
| | Specifies the authentication information to use when connecting to a particular server, identified by | |||||
| | a unique name within the system (referred to by the 'id' attribute below). | |||||
| | | |||||
| | NOTE: You should either specify username/password OR privateKey/passphrase, since these pairings are | |||||
| | used together. | |||||
| | | |||||
| <server> | |||||
| <id>deploymentRepo</id> | |||||
| <username>repouser</username> | |||||
| <password>repopwd</password> | |||||
| </server> | |||||
| --> | |||||
| <!-- Another sample, using keys to authenticate. | |||||
| <server> | |||||
| <id>siteServer</id> | |||||
| <privateKey>/path/to/private/key</privateKey> | |||||
| <passphrase>optional; leave empty if not used.</passphrase> | |||||
| </server> | |||||
| --> | |||||
| </servers> | |||||
| <!-- mirrors | |||||
| | This is a list of mirrors to be used in downloading artifacts from remote repositories. | |||||
| | | |||||
| | It works like this: a POM may declare a repository to use in resolving certain artifacts. | |||||
| | However, this repository may have problems with heavy traffic at times, so people have mirrored | |||||
| | it to several places. | |||||
| | | |||||
| | That repository definition will have a unique id, so we can create a mirror reference for that | |||||
| | repository, to be used as an alternate download site. The mirror site will be the preferred | |||||
| | server for that repository. | |||||
| |--> | |||||
| <mirrors> | |||||
| <!-- mirror | |||||
| | Specifies a repository mirror site to use instead of a given repository. The repository that | |||||
| | this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used | |||||
| | for inheritance and direct lookup purposes, and must be unique across the set of mirrors. | |||||
| | | |||||
| <mirror> | |||||
| <id>mirrorId</id> | |||||
| <mirrorOf>repositoryId</mirrorOf> | |||||
| <name>Human Readable Name for this Mirror.</name> | |||||
| <url>http://my.repository.com/repo/path</url> | |||||
| </mirror> | |||||
| --> | |||||
| </mirrors> | |||||
| <!-- profiles | |||||
| | This is a list of profiles which can be activated in a variety of ways, and which can modify | |||||
| | the build process. Profiles provided in the settings.xml are intended to provide local machine- | |||||
| | specific paths and repository locations which allow the build to work in the local environment. | |||||
| | | |||||
| | For example, if you have an integration testing plugin - like cactus - that needs to know where | |||||
| | your Tomcat instance is installed, you can provide a variable here such that the variable is | |||||
| | dereferenced during the build process to configure the cactus plugin. | |||||
| | | |||||
| | As noted above, profiles can be activated in a variety of ways. One way - the activeProfiles | |||||
| | section of this document (settings.xml) - will be discussed later. Another way essentially | |||||
| | relies on the detection of a system property, either matching a particular value for the property, | |||||
| | or merely testing its existence. Profiles can also be activated by JDK version prefix, where a | |||||
| | value of '1.4' might activate a profile when the build is executed on a JDK version of '1.4.2_07'. | |||||
| | Finally, the list of active profiles can be specified directly from the command line. | |||||
| | | |||||
| | NOTE: For profiles defined in the settings.xml, you are restricted to specifying only artifact | |||||
| | repositories, plugin repositories, and free-form properties to be used as configuration | |||||
| | variables for plugins in the POM. | |||||
| | | |||||
| |--> | |||||
| <profiles> | |||||
| <!-- profile | |||||
| | Specifies a set of introductions to the build process, to be activated using one or more of the | |||||
| | mechanisms described above. For inheritance purposes, and to activate profiles via <activatedProfiles/> | |||||
| | or the command line, profiles have to have an ID that is unique. | |||||
| | | |||||
| | An encouraged best practice for profile identification is to use a consistent naming convention | |||||
| | for profiles, such as 'env-dev', 'env-test', 'env-production', 'user-jdcasey', 'user-brett', etc. | |||||
| | This will make it more intuitive to understand what the set of introduced profiles is attempting | |||||
| | to accomplish, particularly when you only have a list of profile id's for debug. | |||||
| | | |||||
| | This profile example uses the JDK version to trigger activation, and provides a JDK-specific repo. | |||||
| <profile> | |||||
| <id>jdk-1.4</id> | |||||
| <activation> | |||||
| <jdk>1.4</jdk> | |||||
| </activation> | |||||
| <repositories> | |||||
| <repository> | |||||
| <id>jdk14</id> | |||||
| <name>Repository for JDK 1.4 builds</name> | |||||
| <url>http://www.myhost.com/maven/jdk14</url> | |||||
| <layout>default</layout> | |||||
| <snapshotPolicy>always</snapshotPolicy> | |||||
| </repository> | |||||
| </repositories> | |||||
| </profile> | |||||
| --> | |||||
| <!-- | |||||
| | Here is another profile, activated by the system property 'target-env' with a value of 'dev', | |||||
| | which provides a specific path to the Tomcat instance. To use this, your plugin configuration | |||||
| | might hypothetically look like: | |||||
| | | |||||
| | ... | |||||
| | <plugin> | |||||
| | <groupId>org.myco.myplugins</groupId> | |||||
| | <artifactId>myplugin</artifactId> | |||||
| | | |||||
| | <configuration> | |||||
| | <tomcatLocation>${tomcatPath}</tomcatLocation> | |||||
| | </configuration> | |||||
| | </plugin> | |||||
| | ... | |||||
| | | |||||
| | NOTE: If you just wanted to inject this configuration whenever someone set 'target-env' to | |||||
| | anything, you could just leave off the <value/> inside the activation-property. | |||||
| | | |||||
| <profile> | |||||
| <id>env-dev</id> | |||||
| <activation> | |||||
| <property> | |||||
| <name>target-env</name> | |||||
| <value>dev</value> | |||||
| </property> | |||||
| </activation> | |||||
| <properties> | |||||
| <tomcatPath>/path/to/tomcat/instance</tomcatPath> | |||||
| </properties> | |||||
| </profile> | |||||
| --> | |||||
| </profiles> | |||||
| <!-- activeProfiles | |||||
| | List of profiles that are active for all builds. | |||||
| | | |||||
| <activeProfiles> | |||||
| <activeProfile>alwaysActiveProfile</activeProfile> | |||||
| <activeProfile>anotherAlwaysActiveProfile</activeProfile> | |||||
| </activeProfiles> | |||||
| --> | |||||
| </settings> | |||||