Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
S
schbrain-archetype-initializer
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Incidents
Environments
Packages & Registries
Packages & Registries
Package Registry
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
tools
schbrain-archetype-initializer
Commits
4fb7f5a6
Commit
4fb7f5a6
authored
Mar 20, 2022
by
liaozan
🏀
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
init
parent
f949019f
Changes
12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
259 additions
and
29 deletions
+259
-29
initializer-backend/pom.xml
initializer-backend/pom.xml
+24
-0
initializer-backend/src/main/java/com/schbrain/archetype/initializer/backend/config/WebConfiguration.java
...rchetype/initializer/backend/config/WebConfiguration.java
+22
-0
initializer-backend/src/main/java/com/schbrain/archetype/initializer/backend/controller/InitializerController.java
...initializer/backend/controller/InitializerController.java
+22
-0
initializer-backend/src/main/java/com/schbrain/archetype/initializer/backend/maven/MavenUtils.java
...brain/archetype/initializer/backend/maven/MavenUtils.java
+40
-0
initializer-backend/src/main/java/com/schbrain/archetype/initializer/backend/param/ArchetypeGenerateParam.java
...ype/initializer/backend/param/ArchetypeGenerateParam.java
+25
-0
initializer-backend/src/main/resources/application.yaml
initializer-backend/src/main/resources/application.yaml
+7
-1
initializer-ui/.gitignore
initializer-ui/.gitignore
+2
-2
initializer-ui/pom.xml
initializer-ui/pom.xml
+69
-0
initializer-ui/src/components/BackendStarter.vue
initializer-ui/src/components/BackendStarter.vue
+16
-14
initializer-ui/src/util/request.js
initializer-ui/src/util/request.js
+16
-0
initializer-ui/src/util/util.js
initializer-ui/src/util/util.js
+0
-12
pom.xml
pom.xml
+16
-0
No files found.
initializer-backend/pom.xml
View file @
4fb7f5a6
...
...
@@ -14,6 +14,10 @@
<artifactId>
initializer-backend
</artifactId>
<dependencies>
<dependency>
<groupId>
com.schbrain.archetype
</groupId>
<artifactId>
initializer-ui
</artifactId>
</dependency>
<dependency>
<groupId>
com.schbrain.common
</groupId>
<artifactId>
web-common
</artifactId>
...
...
@@ -26,6 +30,26 @@
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-web
</artifactId>
</dependency>
<dependency>
<groupId>
org.apache.maven
</groupId>
<artifactId>
maven-embedder
</artifactId>
<version>
3.8.5
</version>
</dependency>
<dependency>
<groupId>
org.apache.maven
</groupId>
<artifactId>
maven-compat
</artifactId>
<version>
3.8.5
</version>
</dependency>
<dependency>
<groupId>
org.eclipse.aether
</groupId>
<artifactId>
aether-connector-basic
</artifactId>
<version>
1.1.0
</version>
</dependency>
<dependency>
<groupId>
org.eclipse.aether
</groupId>
<artifactId>
aether-transport-http
</artifactId>
<version>
1.1.0
</version>
</dependency>
</dependencies>
<build>
...
...
initializer-backend/src/main/java/com/schbrain/archetype/initializer/backend/config/WebConfiguration.java
0 → 100644
View file @
4fb7f5a6
package
com.schbrain.archetype.initializer.backend.config
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.web.servlet.config.annotation.CorsRegistry
;
import
org.springframework.web.servlet.config.annotation.WebMvcConfigurer
;
/**
* @author liaozan
* @since 2022/3/20
*/
@Configuration
(
proxyBeanMethods
=
false
)
public
class
WebConfiguration
implements
WebMvcConfigurer
{
@Override
public
void
addCorsMappings
(
CorsRegistry
registry
)
{
registry
.
addMapping
(
"/**"
)
.
allowedOrigins
(
"*"
)
.
allowedMethods
(
"*"
)
.
maxAge
(
3600
);
}
}
\ No newline at end of file
initializer-backend/src/main/java/com/schbrain/archetype/initializer/backend/controller/InitializerController.java
0 → 100644
View file @
4fb7f5a6
package
com.schbrain.archetype.initializer.backend.controller
;
import
com.schbrain.archetype.initializer.backend.maven.MavenUtils
;
import
com.schbrain.archetype.initializer.backend.param.ArchetypeGenerateParam
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RestController
;
/**
* @author liaozan
* @since 2022/3/20
*/
@RestController
public
class
InitializerController
{
@PostMapping
(
"/archetype/generate"
)
public
void
generateArchetype
(
@RequestBody
@Validated
ArchetypeGenerateParam
param
)
{
MavenUtils
.
generate
(
param
.
getGroup
(),
param
.
getArtifact
());
}
}
\ No newline at end of file
initializer-backend/src/main/java/com/schbrain/archetype/initializer/backend/maven/MavenUtils.java
0 → 100644
View file @
4fb7f5a6
package
com.schbrain.archetype.initializer.backend.maven
;
import
cn.hutool.core.io.FileUtil
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.maven.cli.MavenCli
;
import
java.io.File
;
/**
* @author liaozan
* @since 2022/3/20
*/
@Slf4j
public
class
MavenUtils
{
public
static
void
generate
(
String
groupId
,
String
artifactId
)
{
MavenCli
cli
=
new
MavenCli
();
System
.
getProperties
().
setProperty
(
"maven.multiModuleProjectDirectory"
,
"$M2_HOME"
);
String
tmpDirPath
=
FileUtil
.
getTmpDirPath
();
File
archetype
=
new
File
(
tmpDirPath
,
artifactId
);
String
[]
args
=
getArgs
(
groupId
,
artifactId
,
archetype
.
getAbsolutePath
());
cli
.
doMain
(
args
,
null
,
System
.
out
,
System
.
err
);
log
.
info
(
"Generate archetype project at {}"
,
archetype
.
getAbsolutePath
());
}
@SuppressWarnings
(
"SpellCheckingInspection"
)
private
static
String
[]
getArgs
(
String
groupId
,
String
artifactId
,
String
outputDirectory
)
{
return
new
String
[]{
"-B"
,
"archetype:generate"
,
"-DarchetypeGroupId=com.schbrain.kp"
,
"-DarchetypeArtifactId=schbrain-archetype"
,
"-DarchetypeVersion=1.0-SNAPSHOT"
,
String
.
format
(
"-DoutputDirectory=%s"
,
outputDirectory
),
String
.
format
(
"-DgroupId=%s"
,
groupId
),
String
.
format
(
"-DartifactId=%S"
,
artifactId
)
};
}
}
\ No newline at end of file
initializer-backend/src/main/java/com/schbrain/archetype/initializer/backend/param/ArchetypeGenerateParam.java
0 → 100644
View file @
4fb7f5a6
package
com.schbrain.archetype.initializer.backend.param
;
import
lombok.Data
;
import
javax.validation.constraints.NotBlank
;
/**
* @author liaozan
* @since 2022/3/20
*/
@Data
public
class
ArchetypeGenerateParam
{
@NotBlank
private
String
projectName
;
@NotBlank
private
String
gitlabUrl
;
@NotBlank
private
String
group
;
@NotBlank
private
String
artifact
;
@NotBlank
private
String
packageName
;
}
\ No newline at end of file
initializer-backend/src/main/resources/application.yaml
View file @
4fb7f5a6
...
...
@@ -2,4 +2,10 @@ spring:
application
:
name
:
initializer-backend
profiles
:
active
:
dev
\ No newline at end of file
active
:
dev
web
:
resources
:
add-mappings
:
true
server
:
servlet
:
context-path
:
/api
\ No newline at end of file
initializer-ui/.gitignore
View file @
4fb7f5a6
.DS_Store
node_modules
/dist
/node
# local env files
.env.local
...
...
@@ -20,4 +20,4 @@ pnpm-debug.log*
*.ntvs*
*.njsproj
*.sln
*.sw?
*.sw?
\ No newline at end of file
initializer-ui/pom.xml
View file @
4fb7f5a6
...
...
@@ -13,4 +13,73 @@
<artifactId>
initializer-ui
</artifactId>
<build>
<plugins>
<plugin>
<groupId>
com.github.eirslett
</groupId>
<artifactId>
frontend-maven-plugin
</artifactId>
<version>
${frontend-maven-plugin.version}
</version>
<executions>
<execution>
<id>
install node and npm
</id>
<goals>
<goal>
install-node-and-npm
</goal>
</goals>
<configuration>
<nodeVersion>
v17.7.1
</nodeVersion>
</configuration>
</execution>
<!-- Install all project dependencies -->
<execution>
<id>
npm install
</id>
<goals>
<goal>
npm
</goal>
</goals>
<!-- optional: default phase is "generate-resources" -->
<phase>
generate-resources
</phase>
<!-- Optional configuration which provides for running any npm command -->
<configuration>
<arguments>
install
</arguments>
</configuration>
</execution>
<!-- Build and minify static files -->
<execution>
<id>
npm run build
</id>
<goals>
<goal>
npm
</goal>
</goals>
<configuration>
<arguments>
run build
</arguments>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>
maven-resources-plugin
</artifactId>
<executions>
<execution>
<id>
copy-resources
</id>
<phase>
package
</phase>
<goals>
<goal>
copy-resources
</goal>
</goals>
<configuration>
<resources>
<resource>
<directory>
${project.basedir}/dist
</directory>
<includes>
<include>
**/*.*
</include>
</includes>
<filtering>
true
</filtering>
</resource>
</resources>
<outputDirectory>
${project.parent.basedir}/initializer-backend/target/classes/static
</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
\ No newline at end of file
initializer-ui/src/components/BackendStarter.vue
View file @
4fb7f5a6
...
...
@@ -2,7 +2,12 @@
<div
class=
"generate-form"
>
<div
class=
"generate-form-div generate-form-label generate-form-input"
>
<label>
Group
</label>
<label
for=
"input-packageName"
>
GitlabUrl
</label>
<input
id=
"input-gitlabUrl"
v-model=
"generateForm.gitlabUrl"
type=
"text"
>
</div>
<div
class=
"generate-form-div generate-form-label generate-form-input"
>
<label
for=
"input-group"
>
Group
</label>
<input
type=
"text"
id=
"input-group"
v-model=
"generateForm.group"
>
</div>
...
...
@@ -12,8 +17,8 @@
</div>
<div
class=
"generate-form-div generate-form-label generate-form-input"
>
<label
for=
"input-
name"
>
Name
</label>
<input
type=
"text"
id=
"input-name"
v-model=
"generateForm.name
"
>
<label
for=
"input-
projectName"
>
Project
Name
</label>
<input
id=
"input-projectName"
v-model=
"generateForm.projectName"
type=
"text
"
>
</div>
<div
class=
"generate-form-div generate-form-label generate-form-input"
>
...
...
@@ -21,35 +26,32 @@
<input
type=
"text"
id=
"input-packageName"
v-model=
"generateForm.packageName"
>
</div>
<br>
<input
class=
"generate-form-submit"
type=
"button"
@
click=
"submit"
value=
"下载"
>
</div>
</
template
>
<
script
>
import
$
from
'
../util/util
'
import
axios
from
'
../util/request
'
export
default
{
name
:
"
BackendStarter
"
,
data
()
{
return
{
generateForm
:
{
projectName
:
''
,
gitlabUrl
:
''
,
group
:
''
,
artifact
:
''
,
name
:
''
,
packageName
:
''
projectName
:
'
schbrain-alarm
'
,
gitlabUrl
:
'
http://gitlab.schbrain.com/gitlab/tools/schbrain-archetype.git
'
,
group
:
'
com.schbrain.kp
'
,
artifact
:
'
schbrain-alarm
'
,
packageName
:
'
com.schbrain.kp.alarm
'
}
}
},
methods
:
{
submit
:
function
()
{
$
.
http
.
post
(
'
/api/devops
/generate
'
,
this
.
generateForm
,
{
axios
.
post
(
'
/archetype
/generate
'
,
this
.
generateForm
,
{
responseType
:
'
blob
'
}).
then
(
res
=>
{
let
fileName
=
window
.
decodeURI
(
res
.
headers
[
'
content-d
isposition
'
].
split
(
'
=
'
)[
1
])
let
fileName
=
window
.
decodeURI
(
res
.
headers
[
'
Content-D
isposition
'
].
split
(
'
=
'
)[
1
])
let
blob
=
new
Blob
([
res
.
data
])
let
link
=
document
.
createElement
(
'
a
'
);
...
...
initializer-ui/src/util/request.js
0 → 100644
View file @
4fb7f5a6
import
axios
from
'
axios
'
;
axios
.
defaults
.
baseURL
=
'
http://localhost:8080/api
'
axios
.
defaults
.
timeout
=
10000
const
service
=
axios
.
create
()
service
.
interceptors
.
request
.
use
(
config
=>
{
return
config
})
service
.
interceptors
.
response
.
use
(
response
=>
{
return
response
})
export
default
service
\ No newline at end of file
initializer-ui/src/util/util.js
deleted
100644 → 0
View file @
f949019f
import
axios
from
'
axios
'
;
const
Util
=
{
apiPath
:
'
http://127.0.0.1:8010/
'
};
// http 通用配置
Util
.
http
=
axios
.
create
({
baseURL
:
Util
.
apiPath
});
export
default
Util
;
\ No newline at end of file
pom.xml
View file @
4fb7f5a6
...
...
@@ -18,6 +18,7 @@
<properties>
<revision>
0.0.1-SNAPSHOT
</revision>
<frontend-maven-plugin.version>
1.12.1
</frontend-maven-plugin.version>
</properties>
<modules>
...
...
@@ -25,4 +26,19 @@
<module>
initializer-ui
</module>
</modules>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>
com.schbrain.archetype
</groupId>
<artifactId>
initializer-ui
</artifactId>
<version>
${project.version}
</version>
</dependency>
<dependency>
<groupId>
com.schbrain.archetype
</groupId>
<artifactId>
initializer-backend
</artifactId>
<version>
${project.version}
</version>
</dependency>
</dependencies>
</dependencyManagement>
</project>
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment