Solon

打包 war

</> markdown

Solon 是一个强调自启动的框架,原则上是不推荐 war 容器运行的。但总会有需要的时候。

1、操作指南:

在普通项目增加几项内容即可打 war 包(仍可打 jar 包):

  • 添加 webapp/WEB-INF/web.xml 配置(参考模板里的内容)
  • 添加 solon.web.servlet(for javax)或者 solon.web.servlet.jakarta(for jakarta)插件依赖
  • 使用 solon-maven-plugin 或者 maven-war-plugin 打包

具体模板下载:

2、具体说明:

a) 添加 webapp/WEB-INF/web.xml 配置,把 solonStartClass 的参数值改成 main 函数类

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
		 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
		 xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
		 version="4.0">
	<display-name>Solon war app</display-name>

	<context-param>
		<param-name>solonStartClass</param-name>
		<param-value>org.example.demo.DemoApp</param-value>
	</context-param>
	
	<listener>
		<listener-class>org.noear.solon.web.servlet.SolonServletContextListener</listener-class>
	</listener>

	<welcome-file-list>
		<welcome-file>/</welcome-file>
	</welcome-file-list>
</web-app>

b) 添加 solon.web.servlet 插件依赖

提供 servlet 容器对接支持。注意下面的包注释说明:

<!-- javax 的用这个包 -->
<dependency>
  <groupId>org.noear</groupId>
  <artifactId>solon.web.servlet</artifactId>
</dependency>

<!-- jakarta 的用这个包(v2.4.1 后支持) -->
<dependency>
    <groupId>org.noear</groupId>
    <artifactId>solon.web.servlet.jakarta</artifactId>
</dependency>

c) 使用 solon-maven-plugin 或者 maven-war-plugin 打包

solon-maven-plugin 同时支持打 jar 和 war(由 packaging 配置指定)

<parent>
    <groupId>org.noear</groupId>
    <artifactId>solon-parent</artifactId>
    <version>${solon.version}</version>
    <relativePath />
</parent>

<packaging>war</packaging>
...
<plugin>
  <groupId>org.noear</groupId>
  <artifactId>solon-maven-plugin</artifactId>
</plugin>

或者 maven-war-plugin,它只支持打 war 包(如果不使用 solon-parent,需要指定插件版本)

<parent>
    <groupId>org.noear</groupId>
    <artifactId>solon-parent</artifactId>
    <version>${solon.version}</version>
    <relativePath />
</parent>

<packaging>war</packaging>
...
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-war-plugin</artifactId>
</plugin>