1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/geekidea-spring-boot-assembly

Клонировать/Скачать
README.md 11 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 25.11.2024 04:12 5b30090

Проект: HelloService.java

  • Сборка проекта:

    • mvn clean package — компиляция и сборка проекта.
  • Упаковка:

    • spring-boot-assembly-local-1.0.RELEASE.tar.gz — упакованный проект с использованием maven assembly плагина.
      • После упаковки структура проекта выглядит следующим образом:
        • LICENSE
        • NOTICE
        • README.md
        • bin — каталог с исполняемыми файлами для запуска, остановки и перезапуска приложения.
        • boot — файл jar с приложением.
        • config — конфигурационные файлы приложения.
        • lib — библиотеки, используемые приложением.
  • Запуск:

    • Для запуска приложения на Linux используется скрипт startup.sh.
    • Для остановки приложения используется shutdown.sh.
    • Для перезапуска приложения используется restart.sh.
  • Доступ к приложению:

    • Доступ к приложению осуществляется через браузер по адресу http://localhost:8080/example/hello?name=123.
    • Ответ от приложения в формате JSON: {"msg":"service hello:123","code":200}.
  • Конфигурация запуска:

    • В скрипте startup.sh задаются параметры запуска приложения:
      • APPLICATION="spring-boot-assembly" — название проекта.
      • APPLICATION_JAR="${APPLICATION}.jar" — имя файла jar с приложением.
      • JAVA_OPT="-server -Xms256m -Xmx256m -Xmn512m -XX:MetaspaceSize=64m -XX:MaxMetaspaceSize=256m" — параметры JVM.
      • nopush java ${JAVA_OPT} -jar — команда для запуска приложения. Окончательная команда для запуска jar-пакета
nohup java -server -Xms256m -Xmx256m -Xmn512m -XX:MetaspaceSize=64m -XX:MaxMetaspaceSize=256m -XX:-OmitStackTraceInFastThrow -jar /opt/spring-boot-assembly/boot/spring-boot-assembly.jar --spring.config.location=/opt/spring-boot-assembly/config/ > /opt/spring-boot-assembly/logs/spring-boot-assembly.log 2>&1 &
  • nohup — запуск jar-пакета в фоновом режиме, после чего вывод журнала выполнения в указанное местоположение;
  • -server — параметр JVM;
  • -jar /opt/spring-boot-assembly/boot/spring-boot-assembly.jar — путь к запускаемому jar-пакету;
  • все пути в команде запуска (путь к jar-пакету, путь к конфигурационному файлу и путь к журналу) являются абсолютными;
  • скрипты start.sh, shutdown.sh и restart.sh можно запускать из любого места;
  • --spring.config.location — указание на каталог или файл конфигурации, если это каталог, то он должен заканчиваться символом /;
  • /opt/spring-boot-assembly/logs/spring-boot-assembly.log — вывод журнала в указанный файл;

  • 2>&1 & — объединение вывода нормального и аварийного журналов в указанный журнал и запуск в фоновом режиме.

Скрипт shutdown.sh для остановки сервиса:

PID=$(ps -ef | grep "${APPLICATION_JAR}" | grep -v grep | awk '{ print $2 }')
kill -9 ${PID}

Логирование проекта

  • Путь к файлу журнала при запуске:
logs/spring-boot-assembly_startup.log
  • Пример содержимого файла журнала при запуске:
================================================ 2018-12-12 12:36:56 ================================================
application name: spring-boot-assembly
application jar name: spring-boot-assembly.jar
application bin path: /opt/spring-boot-assembly/bin
application root path: /opt/spring-boot-assembly
application log path: /opt/spring-boot-assembly/logs/spring-boot-assembly.log
application JAVA_OPT : -server -Xms256m -Xmx256m -Xmn512m -XX:MetaspaceSize=64m -XX:MaxMetaspaceSize=256m -XX:-OmitStackTraceInFastThrow
application background startup command: nohup java -server -Xms256m -Xmx256m -Xmn512m -XX:MetaspaceSize=64m -XX:MaxMetaspaceSize=256m -XX:-OmitStackTraceInFastThrow -jar /opt/spring-boot-assembly/boot/spring-boot-assembly.jar --spring.config.location=/opt/spring-boot-assembly/config/ > /opt/spring-boot-assembly/logs/spring-boot-assembly.log 2>&1 &
application pid: 11596
  • Путь к файлу журнала во время работы:
logs/spring-boot-assembly.log
  • Пример содержимого файла журнала во время работы:
.   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.1.0.RELEASE)

2018-12-12 23:28:58.420  INFO 11596 --- [           main] o.s.boot.SpringApplication               : Starting application on VM_0_17_centos with PID 11596 (started by root in /opt/spring-boot-assembly)
2018-12-12 23:28:58.442  INFO 11596 --- [           main] o.s.boot.SpringApplication               : The following profiles are active: local
2018-12-12 23:29:01.355  INFO 11596 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)
2018-12-12 23:29:01.437  INFO 11596 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2018-12-12 23:29:01.437  INFO 11596 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet Engine: Apache Tomcat/9.0.12
2018-12-12 23:29:01.461  INFO 11596 --- [           main] o.a.catalina.core.AprLifecycleListener   : The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: [/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib]
2018-12-12 23:29:01.646  INFO 11596 --- [           main] o.a.c.c.C.[.[localhost].[/example]       : Initializing Spring embedded WebApplicationContext
2018-12-12 23:29:01.647  INFO 11596 --- [           main] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 3028 ms
2018-12-12 23:29:01.708  INFO 11596 --- [           main] o.s.b.w.servlet.ServletRegistrationBean  : Servlet dispatcherServlet mapped to [/]
2018-12-12 23:29:01.712  INFO 11596 --- [           main] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'characterEncodingFilter' to: [/*]
2018-12-12 23:29:01.712  INFO 11596 --- [           main]
``` **Перевод текста на русский язык:**

*o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'hiddenHttpMethodFilter' to: [/*]*

2018-12-12 23:29:01.712  ИНФО 11596 --- [           main] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'formContentFilter' to: [/*]

2018-12-12 23:29:01.713  ИНФО 11596 --- [           main] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'requestContextFilter' to: [/*]

2018-12-12 23:29:02.250  ИНФО 11596 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'

2018-12-12 23:29:03.179  ИНФО 11596 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path '/example'

2018-12-12 23:29:03.182  ИНФО 11596 --- [           main] o.s.boot.SpringApplication               : Started application in 5.844 seconds (JVM running for 6.547)

spring.profiles.active = local
contextPath = /example
server.port = 8080
hello = Hello Local

http://localhost:8080/example/hello?name=123

**Проектная история запуска журнала хранится в пути, каждый раз при запуске проекта предыдущие журналы запуска перемещаются в каталог back**

`-- logs
    |-- back
    |   |-- spring-boot-assembly_back_2018-12-12-23-30-10.log
    |   `-- spring-boot-assembly_back_2018-12-12-23-36-56.log
    |-- spring-boot-assembly.log
    `-- spring-boot-assembly_startup.log`

#### Сборка Maven-проекта

##### 1. Используйте инструмент IDEA для сборки и выберите соответствующий профиль, затем выполните команду clean package

![mvn-clean-package-local](https://raw.githubusercontent.com/geekidea/spring-boot-assembly/master/img/mvn-clean-package-local.png)

![mvn-clean-package-dev](https://raw.githubusercontent.com/geekidea/spring-boot-assembly/master/img/mvn-clean-package-dev.png)

##### 2. Соберите проект с помощью команды maven

```bash
mvn clean package -Pdev
3. Соберите проект с помощью скрипта mvn-package

Windows

mvn-package.bat dev

Linux/Mac

sh mvn-package.sh dev

FAQ

Q: После создания tar-пакета проекта некоторые конфигурационные файлы в каталоге resource не могут быть прочитаны нормально
A: Если в каталоге resource используются другие конфигурационные файлы, необходимо настроить их в файлах pom.xml и assembly.xml
  1. Конфигурация по умолчанию в файле pom.xml

Добавьте файлы, которые нужно упаковать, в include

<!-- 资源文件配置 -->
<resource>
    <directory>src/main/resources</directory>
    <filtering>true</filtering>
    <includes>
        <include>application.yml</include>
        <include>application-${profileActive}.yml</include>
        <include>mapper/**/*.xml</include>
        <include>static/**</include>
        <include>templates/**</include>
        <include>*.xml</include>
        <include>*.properties</include>
        <!-- xxx.keystore -->
        <include>xxx.keystore</include>
    </includes>
</resource>
  1. Конфигурация по умолчанию в файле assembly.xml

Добавьте файлы, которые нужно упаковать, в include

<!-- 指定输出target/classes中的配置文件到config目录中 -->
<fileSet>
    <directory>${basedir}/target/classes</directory>
    <outputDirectory>config</outputDirectory>
    <fileMode>0644</fileMode>
    <includes>
        <include>application.yml</include>
        <include>application-${profileActive}.yml</include>
        <include>mapper/**/*.xml</include>
        <include>static/**</include>
        <include>templates/**</include>
        <include>*.xml</include>
        <include>*.properties</include>
        <!-- xxx.keystore -->
        <include>xxx.keystore</include>
    </includes>
</fileSet>

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/geekidea-spring-boot-assembly.git
git@api.gitlife.ru:oschina-mirror/geekidea-spring-boot-assembly.git
oschina-mirror
geekidea-spring-boot-assembly
geekidea-spring-boot-assembly
master