Artigo Diretório
Depois que o projeto SpringBoot é desenvolvido, ele precisa ser empacotado em um pacote jar / pacote war, e implantado e executado para completar o processo de todo o projeto.
1. No arquivo pom
<build>
<finalName>DAG-1.0</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>11</source>
<target>11</target>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
<include>**/*.yml</include>
</includes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
<include>**/*.yml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>
1.1 maven-compiler-plugin
maven-compiler-plugin
Você pode especificar a versão do JDK no projeto e a versão do arquivo de classe gerado pela compilação especificada. No meu exemplo, especifiquei que JDK11 foi usado no código-fonte durante o desenvolvimento e o arquivo de classe gerado também corresponde a JDK11.
1.2 spring-boot-maven-plugin
spring-boot-maven-plugin
Plug-ins empacotados usando Maven. repackage
Reempacote o aplicativo. Por padrão, os dois objetivos do maven de reembalagem e execução incluirão todas as dependências definidas no projeto.
Algumas dependências devem ser excluídas do pacote executável do jar. Existem três maneiras de excluir módulos dependentes enquanto o pacote está em execução:
1.2.1 Excluir um módulo maven específico
A exclusão de um módulo maven específico é obtida por meio de uma combinação única de groupId e artifactId. (Se necessário, você pode adicionar um classificador para confirmar exclusivamente.)
<build>
<finalName>DAG-1.0</finalName>
<plugins>
......
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
<configuration>
<excludes>
<excludes>
<groupId>com.foo</groupId>
<artifactId>bar</artifactId>
</excludes>
</excludes>
</configuration>
</plugin>
</plugins>
......
</build>
Exclua o módulo da barra em com.foo.
1.2.2 Excluir todos os módulos maven que correspondem ao "artifactId especificado"
Excluir todos os módulos maven que correspondem ao "artifactId especificado".
<build>
<finalName>DAG-1.0</finalName>
<plugins>
......
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
<configuration>
<excludes>
<excludeArtifactIds>my-lib,another-lib</excludeArtifactIds>
</excludes>
</configuration>
</plugin>
</plugins>
......
</build>
Excluídos artifactId
seja my-lib
, another-lib
todos os módulos, isto é, tudo groupId
inferior artifactId
para o my-lib
, another-lib
módulo.
1.2.3 Excluir todos os módulos maven pertencentes ao "groupId especificado"
<build>
<finalName>DAG-1.0</finalName>
<plugins>
......
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
<configuration>
<excludes>
<excludeGroupIds>com.foo</excludeGroupIds>
</excludes>
</configuration>
</plugin>
</plugins>
......
</build>
Excluído groupId
como com.foo
todos os módulos.
2. Nome do pacote Jar
<finalName>Your jar Package Name</finalName>
A construção fileName
especifica o nome do pacote jar gerado pela embalagem.
3. Embalagem Maven
Execute os seguintes comandos no diretório raiz do projeto SpringBoot:
mvn package spring-boot:repackage
Você pode gerar a pasta de destino no diretório raiz, que contém xxx.jar.
4. Execute o pacote jar
4.1 Pacote jar do console em execução
java -jar xxx.jar
4.2 Execute o pacote jar em segundo plano, fechando o terminal não afeta o funcionamento do pacote jar
nohup java -jar DAG-1.0.jar > msg.log 2>&1 &
O pacote jar é executado em segundo plano, as informações de log são inseridas no arquivo msg.log e o log de erros e o log correto são inseridos no msg.log.
Adicionar um E comercial ao final do comando significa que o processo será executado em segundo plano, de modo que retornará imediatamente ao estado de prompt e podemos continuar a fazer o seguinte.
4.3 Execute o pacote jar em segundo plano e insira o log correto e o log incorreto em arquivos diferentes
nohup java -jar DAG-1.0.jar >> msg1.log 2>>msg2.log &
O log correto é inserido em msg1.log, e o log incorreto é inserido em msg2.log.
5. Empacote e gere um pacote de guerra
O pacote jar é gerado por padrão. Especifique qual forma de pacote deve ser gerada no arquivo pom
<packaging>war</packaging>
<name>DAG-1.0</name>
<description>DAG project for Spring Boot</description>
Execute comandos de empacotamento
mvn package spring-boot:repackage
Você pode ver que o pacote war é gerado e o pacote war é implantado para executar o programa.
6. Erros encontrados e precauções
6.1 A página correspondente não pode ser encontrada ao acessar a página HTML
Nesse caso, devemos primeiro verificar se há uma pasta de modelos correspondente na pasta de destino gerada e o arquivo xxx.html que deve estar contido nela. Quando o programa está em execução, ele reconhece apenas as coisas na pasta de destino.Se não houver uma pasta de modelos correspondente e arquivo xxx.html na pasta de destino, é definitivamente impossível abrir a página HTML.
A causa comum desse erro é que xxx.html não é especificado como o recurso do projeto a ser empacotado.Isso precisa ser especificado no arquivo pom.
<build>
......
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
<include>**/*.yml</include>
<include>**/*.html</include>
</includes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
<include>**/*.yml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
<build>
Como acima, especifique o arquivo .properties, arquivo .xml, arquivo .yml, arquivo .html na pasta src / main / resources e o arquivo .properties, arquivo .xml, .yml na pasta src / main / java O arquivo é usado como o arquivo de recurso do projeto, portanto, o arquivo html pode ser encontrado no arquivo de destino gerado.
Se você remover a indicação do arquivo .html, o arquivo HTML correspondente não poderá ser encontrado na pasta de destino gerada e a página HTML não poderá ser aberta.
<build>
......
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
<include>**/*.yml</include>
</includes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
<include>**/*.yml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
<build>
Após a remoção, não há nenhum arquivo HTML na pasta de destino
gerada.Sem a pasta de modelos e os arquivos HTML nela, o programa em execução não será capaz de acessar a página HTML.
6.2 O arquivo HTML é gerado no destino, mas a página HTML ainda não foi encontrada
É possível que thymeleaf
a configuração esteja errada.
thymeleaf.prefix
Você deve escrevê-lo corretamente, e você não pode /
escrever um a mais ou a menos /
, porque desta forma, ao escrever a página de acesso, haverá mais ou menos um no caminho, e você /
não conseguirá encontrar a página HTML .
6.3 O arquivo pom maven-compiler-plugin
ou spring-boot-maven-plugin
outros plug-ins não podem ser importados corretamente (fica vermelho)
Você precisa introduzir esses plug-ins nas dependências e, em seguida, introduzir esses plug-ins nos plug-ins na construção.