ezcloud-archetype
English Doc | 中文文档 |
---|
A maven archetype for EZCloud scaffolding.
💡
Usage
create single project
Customize the values of the following parameters according to the situation:
mvn -U -B archetype:generate \
-DarchetypeGroupId='io.github.project-h3phaestus' \
-DarchetypeArtifactId='ezcloud-archetype' \
-DarchetypeVersion='1.0.0-SNAPSHOT' \
-Dgitignore='.gitignore' \
-DprojectDescription='' \
-DgroupId='' \
-DartifactId='' \
-Dpackage='' \
-DjdkVersion='' \
-DserverPort='${random.int(1000,2000)}' \
-DnacosDevHost='' \
-DnacosTestHost='' \
-DnacosPrdHost='' \
-Dauthor='' \
-DezCloudVersion=''
batch create project
We can also generate multiple projects simultaneously through python script:
python version: 3.8
import json
import os
import sys
import subprocess
# JSON configuration:
configJson = """[
{
"projectDescription": "my test project",
"groupId": "com.yangyunsen.test",
"artifactId": "ezcloud-test",
"package": "com.yangyunsen.test.ezcloudtest",
"jdkVersion": "11",
"author": "clouds3n",
"ezCloudVersion": "1.0.0-SNAPSHOT",
"serverPort": "${random.int(1000,2000)}",
"nacosDevHost": "10.236.101.16:30848",
"nacosTestHost": "192.168.2.157:8848",
"nacosPrdHost": "nacos-headless.default.svc.cluster.local:8848",
"driverType": "0"
},
{
"projectDescription": "my test project2",
"groupId": "com.yangyunsen.test",
"artifactId": "ezcloud-test2",
"package": "com.yangyunsen.test.ezcloudtest2",
"jdkVersion": "11",
"author": "clouds3n",
"ezCloudVersion": "1.0.0-SNAPSHOT",
"serverPort": "${random.int(1000,2000)}",
"nacosDevHost": "10.236.101.16:30848",
"nacosTestHost": "192.168.2.157:8848",
"nacosPrdHost": "nacos-headless.default.svc.cluster.local:8848",
"driverType": "0"
},
{
"projectDescription": "my test project3",
"groupId": "com.yangyunsen.test",
"artifactId": "ezcloud-test3",
"package": "com.yangyunsen.test.ezcloudtest3",
"jdkVersion": "11",
"author": "clouds3n",
"ezCloudVersion": "1.0.0-SNAPSHOT",
"serverPort": "${random.int(1000,2000)}",
"nacosDevHost": "10.236.101.16:30848",
"nacosTestHost": "192.168.2.157:8848",
"nacosPrdHost": "nacos-headless.default.svc.cluster.local:8848",
"driverType": "0"
},
{
"projectDescription": "my test project4",
"groupId": "com.yangyunsen.test",
"artifactId": "ezcloud-test4",
"package": "com.yangyunsen.test.ezcloudtest4",
"jdkVersion": "11",
"author": "clouds3n",
"ezCloudVersion": "1.0.0-SNAPSHOT",
"serverPort": "${random.int(1000,2000)}",
"nacosDevHost": "10.236.101.16:30848",
"nacosTestHost": "192.168.2.157:8848",
"nacosPrdHost": "nacos-headless.default.svc.cluster.local:8848",
"driverType": "0"
},
{
"projectDescription": "my test project5",
"groupId": "com.yangyunsen.test",
"artifactId": "ezcloud-test5",
"package": "com.yangyunsen.test.ezcloudtest5",
"jdkVersion": "11",
"author": "clouds3n",
"ezCloudVersion": "1.0.0-SNAPSHOT",
"serverPort": "${random.int(1000,2000)}",
"nacosDevHost": "10.236.101.16:30848",
"nacosTestHost": "192.168.2.157:8848",
"nacosPrdHost": "nacos-headless.default.svc.cluster.local:8848",
"driverType": "0"
}
]"""
print('> current running OS: ' + ('Windows' if os.name == 'nt' else 'Unix'))
# parse JSON configuration:
print('[ INFO] Start parsing json configuraiton...')
configArray = json.loads(configJson)
# exec dynamic commands
print('> Fetch archetype from remote mvn repository?[y/n]:')
fromRemoteFlag = input()
print(f"""[ INFO ] Start generating {len(configArray)} projects...""")
processes = []
try:
for config in configArray:
command = f"""
mvn -U -B archetype:generate \
{f'-DarchetypeCatalog=internal {chr(92)}' if fromRemoteFlag != 'y' else ''}
-DarchetypeGroupId='io.github.project-h3phaestus' \
-DarchetypeArtifactId='ezcloud-archetype' \
-DarchetypeVersion='1.0.0-SNAPSHOT' \
-Dgitignore='.gitignore' \
-DprojectDescription={config['projectDescription']} \
-DgroupId={config['groupId']} \
-DartifactId={config['artifactId']} \
-Dpackage={config['package']} \
-DjdkVersion={config['jdkVersion']} \
-DserverPort='{config['serverPort']}' \
-DnacosDevHost='{config['nacosDevHost']}' \
-DnacosTestHost='{config['nacosTestHost']}' \
-DnacosPrdHost='{config['nacosPrdHost']}' \
-Dauthor='{config['author']}' \
-DezCloudVersion='{config['ezCloudVersion']}'
"""
print(command)
processes.append(subprocess.Popen(command, shell=True))
except Exception as e:
print(f"""[ ERROR] Failed to generate projects: {str(e)}""")
sys.exit(1)
for process in processes:
process.wait()
print('[ OK ] Success!')
🛠️
project yaml config sample
server:
servlet:
session:
timeout: 30M
spring:
profiles:
active: dev
application:
name: ezcloud-test
servlet:
multipart:
max-request-size: 20MB
max-file-size: 20MB
datasource:
url: jdbc:postgresql://x454262h22.qicp.vip:5432/zd
username: zd
password: cquiss3
hikari:
connection-timeout: 60000
minimum-idle: 1
maximum-pool-size: 6
idle-timeout: 30000
pool-name: HikariPool
cloud:
sentinel:
transport:
port: 20100
dashboard: 192.168.2.157:8080
redis:
host: 192.168.2.157
port: 16379
password: cquissE!
timeout: 10s
lettuce:
pool:
min-idle: 1
max-idle: 3
max-active: 4
max-wait: -1ms
mybatis-plus:
configuration:
auto-mapping-behavior: full
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
default-enum-type-handler: org.apache.ibatis.type.EnumOrdinalTypeHandler
local-cache-scope: statement
cache-enabled: false
global-config:
banner: false
db-config:
id-type: assign_id
table-prefix: tm
logic-delete-field: deleted
logic-not-delete-value: false
logic-delete-value: true
update-strategy: not_null
insert-strategu: not_null
ezcloud:
autoconfigure:
enable-thread-pool: true
enable-mvc: true
enable-exception-handler: true
enable-serializer: true
enable-redisson-cache-manager: true
feign:
sentinel:
enabled: true
🔨
Contributing
PRs accepted.
Small note: If editing the Readme, please conform to the standard-readme specification.