Skip to content

Project-H3phaestus/ezcloud-archetype

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ezcloud-archetype

HnF0M9.png

mit contributors jdk automation

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.

😎 Contributors

📘 License

MIT © CloudS3n

About

A maven archetype for EZCloud scaffolding.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages