博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
springboot项目中使用maven resources
阅读量:4565 次
发布时间:2019-06-08

本文共 13417 字,大约阅读时间需要 44 分钟。

maven resource 组件可以把pom的变量替换到相关的resouces目录中的资源文件变量

示例项目:内容中心 (文章管理)  生成jar包,生成docker ,生成k8s文件

1.项目结构

├── content-api│   ├── pom.xml│   └── src│       ├── main│       │   └── java│       │       └── com│       │           └── itstudy│       │               └── content_api│       │                   ├── domain│       │                   │   └── ArticleInfo.java│       │                   └── service│       │                       └── ArticleService.java│       └── test│           └── java│               └── com│                   └── itstudy│                       └── content_api│                           └── AppTest.java├── content-server│   ├── pom.xml│   └── src│       ├── bin│       │   └── app.sh│       ├── main│       │   ├── java│       │   │   └── com│       │   │       └── itstudy│       │   │           └── content_server│       │   │               ├── ContentServerApp.java│       │   │               ├── controller│       │   │               │   └── ArticleController.java│       │   │               └── service│       │   │                   └── impl│       │   │                       └── ArticleServiceImpl.java│       │   └── resources│       │       ├── dev│       │       │   ├── application.yml│       │       │   ├── docker│       │       │   │   └── Dockerfile│       │       │   └── k8s│       │       │       ├── content-center-rc.yml│       │       │       └── content-center-svc.yml│       │       └── pro│       │           ├── application.yml│       │           ├── docker│       │           │   └── Dockerfile│       │           └── k8s│       │               ├── content-center-rc.yml│       │               └── content-center-svc.yml│       └── test│           └── java│               └── com│                   └── itstudy│                       └── content_api│                           └── ContentServerAppTest.java└── pom.xml

2. 父级项目pom文件 

4.0.0
com.itstudy
contentcenter
1.0-SNAPSHOT
content-api
content-server
pom
contentcenter
org.springframework.cloud
spring-cloud-starter-parent
Camden.SR5
nexus-releases
Nexus Release Repository
http://maven.mysite.com/nexus/content/repositories/demo-Release/
nexus-snapshots
Nexus Snapshot Repository
http://maven.mysite.com/nexus/content/repositories/demo-Snapshot/
UTF-8
1.8
1.8
junit
junit
4.11
test
org.apache.maven.plugins
maven-source-plugin
true
package
jar-no-fork
com.spotify
docker-maven-plugin
0.4.11
dockerimage.mysite.com/contentcenter/${project.artifactId}
dockerimage.mysite.com/java/alpine-oraclejdk8:8.131.11-slim
contentcenter-${project.version}
my@mail.com
["java", "-Djava.security.egd=file:/dev/./urandom","-jar", "${project.build.finalName}.jar"]
/tmp
docker-image
/
${project.build.directory}
${project.build.finalName}.jar
maven-compiler-plugin
3.1
1.8
1.8

2.2实体类

package com.itstudy.content_api.domain;public class ArticleInfo {    private String id;    private String content;    //省略geter setter}

2.3接口

package com.itstudy.content_api.service;import com.itstudy.content_api.domain.ArticleInfo;public interface ArticleService {    void insert(ArticleInfo item);    void update(ArticleInfo item);}

3 content-server项目 具体业务服务

3.1 pom文件 

contentcenter
com.itstudy
1.0-SNAPSHOT
4.0.0
content-server
content-server
UTF-8
1.8
1.8
org.springframework.cloud
spring-cloud-starter-eureka
org.springframework.boot
spring-boot-starter
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-data-mongodb
org.springframework.boot
spring-boot-starter-test
test
org.springframework.boot
spring-boot-starter-actuator
junit
junit
4.11
test
com.itstudy
content-api
1.0-SNAPSHOT
compile
dev
true
pro
192.168.146.8:27017,192.168.146.9:27017,192.168.146.10:27017
username:password@dbname-test
dbname-test
http://192.168.146.76:50002/eureka/
192.168.146.11:22122
192.168.146.11:22122
1501
601
${project.name}
8080
pro
pro
192.168.146.8:27017,192.168.146.9:27017,192.168.146.10:27017
username:password@dbname
dbname
http://ds:8761/eureka/
192.168.146.11:22122
192.168.146.11:22122
1501
601
8080
${project.name}
${project.basedir}/src/main/resources
dev/**
pro/**
${project.basedir}/src/main/resources/${profile-name}
true
**/*.properties
**/*.yml
**/*.xml
**/Dockerfile
${project.basedir}/src/main/resources/
false
**/*.xml
org.springframework.boot
spring-boot-maven-plugin

3.2  service.impl

package com.itstudy.content_server.service.impl;import com.itstudy.content_api.domain.ArticleInfo;import com.itstudy.content_api.service.ArticleService;import org.springframework.stereotype.Service;@Servicepublic class ArticleServiceImpl implements ArticleService {    @Override    public void insert(ArticleInfo item) {    }    @Override    public void update(ArticleInfo item) {    }}

3.3 controller

package com.itstudy.content_server.controller;import com.itstudy.content_api.domain.ArticleInfo;import com.itstudy.content_api.service.ArticleService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.PostMapping;import org.springframework.web.bind.annotation.RequestBody;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;@RestController@RequestMapping("/article")public class ArticleController {    @Autowired    ArticleService articleService;    @PostMapping("/insert")    public void postInsert(@RequestBody ArticleInfo info){        //其它业务    }    @PostMapping("/update")    public void postUpdate(@RequestBody ArticleInfo info){        //其它业务    }}

3.4 springboot 启动类app

package com.itstudy.content_server;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.netflix.eureka.EnableEurekaClient;/** * 项目启动类 */@SpringBootApplication@EnableEurekaClientpublic class ContentServerApp{    public static void main( String[] args )    {        System.out.println("内容中心-启动中...");        SpringApplication.run(ContentServerApp.class, args);        System.out.println("内容中心-启动成功");    }}

3.5 resources目录

3.5.1 resources/dev/docker/Dockerfile

FROM dockerimage.mysite.com/java/alpine-oraclejdk8:8.131.11-slimVOLUME /tmpADD  @project.build.finalName@.jar app.jarRUN sh -c 'touch /app.jar'ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"

3.5.2 resource/dev/k8s/rc 及 resources/dev/k8s/svc

1) rc文件

apiVersion: v1kind: ReplicationControllermetadata:  name: @project.artifactId@spec:  replicas: 1  selector:    name: @project.artifactId@  template:    metadata:      labels:        name: @project.artifactId@    spec:      containers:        - name: api          image: dockerimage.mysite.com/@app-name@/@app-name@          ports:            - containerPort: 8080

2)svc文件

apiVersion: v1kind: Servicemetadata:  name: @app-name@  #也可替换为 @project.artifactId@spec:  selector:    name: @app-name@ #也可替换为 @project.artifactId@  ports:    - name: http      port: 8080      protocol: TCP      nodePort: 30008  type: NodePort

3.6 application.yml文件 

server:  port: @app-port@spring:  application:    name:  @app-name@  # 项目名称尽量用小写  jmx:    enabled: falsehystrix:  command:    default:      execution:        timeout:          enabled: falseeureka:  client:    serviceUrl:      defaultZone: @plateform-ds@    # 指定注册中心的地址  instance:    preferIpAddress: truefdfs:  soTimeout: @app-dfs-sotimeout@  connectTimeout: @app-dfs-connecttimeout@  thumbImage:             #缩略图生成参数    width: 150    height: 150  trackerList:            #TrackerList参数,支持多个    - @app-dfs1@    - @app-dfs2@

3.7 resource/pro文件夹与dev文件夹文件相似,只是个别配置不同。

 

4.重要总结

4.1 在pom文件中,引用maven变量使用 ${变量名}即可

4.2 在springboot项目中,使用maven resources组件时,使用@变量名@ 进行取值(因为springboot项目中进行了特殊处理)

4.3 在使用maven resources组件时

dev/**
pro/**
* 匹配 0或N个字符 ** 匹配 0或N个目录 如果使用*不能实现相应功能,请切换** 即可

4.4 在使用maven resources组件时,只要增加了resource这个节点,必须重新指定resources文件夹位置 

如示例: 

 

转载于:https://www.cnblogs.com/liuxm2017/p/11078462.html

你可能感兴趣的文章
OC-->NSMutableString常用方法
查看>>
hive 分区表
查看>>
观影计划:漫威电影宇宙「无限战争」系列
查看>>
用番茄工作法提升工作效率 (二)用番茄钟实现劳逸结合(简单到不可相信)...
查看>>
1.3 排序显示数据
查看>>
在form上设定了defaultbutton属性之后,切换提交按钮的解决办法
查看>>
HTMl5视频播放
查看>>
struts2标签之列求和
查看>>
《面向对象程序设计课程学习进度条》
查看>>
oracle 迁移数据文件( 转)
查看>>
mybatis association和collection标签怎么用
查看>>
一个最简单的Delphi2010的PNG异形窗口方法
查看>>
怎样关闭拼写错误标记
查看>>
常见COM问题解答
查看>>
用到的linux命令
查看>>
【词云】代码
查看>>
201521123038 《Java程序设计》 第十二周学习总结
查看>>
UIImageView 一些属性设置
查看>>
C# winfrom 打印到Excel中
查看>>
Java中ThreadLocal类的作用以及实现原理
查看>>