| @@ -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> | |||