Ada*_*ent 7 java tomcat jar build onejar
我希望结合/嵌入Tomcat 和我的网络应用程序作为onejar aka胖罐但我不确定它是否可能.使用Maven Shade插件和Winstone可以使用Jetty但是我尝试了类似于Tomcat 7的东西并且无法正确加载它.目标是能够做到:java -jar mywebapp.jar.
问题是Tomcat想要从文件系统而不是从类路径加载东西.也就是说,您可以嵌入Tomcat,但它会期望您的WAR文件可用作文件.
我尝试了以前SO帖子中的许多技术来嵌入Tomcat 6和7.虽然我可以嵌入它并启动它无法访问我的应用程序.
我想一个选项是有开机的JAR解压缩本身,以便AppBase与DocBase在文件系统上的文件.我还没试过,但是会的.
这里有一个重复的问题,我终于找到了:嵌入Tomcat的自包含war文件?(请以复制方式投票结束)
我不知道我怎么一直错过这个,但是Tomcat Maven插件现在支持制作可执行的WAR:
http://tomcat.apache.org/maven-plugin-2.0/executable-war-jar.html
如果您需要Tomcat 8,则需要进行更新。您必须使用插件的2.0版本,因为2.2 Tomcat 7插件将无法使用,并且您需要第三方插件tomcat8-war-runner。下面我附上了您将需要的maven配置,该配置还允许您选择所需的Tomcat 8的正确版本(tomcat.version属性)。
Tomcat8 maven插件处于混乱状态,但尚未发布(请对jira进行投票并向他们投诉以完成此操作)。
最后,这种Maven插件方法的一个主要警告是插件伪嵌入。那是您的应用程序将不会与Tomcat在同一类加载器中运行,而是在初始化期间实际部署。这种方法有利有弊。
另一方面,Spring Boot和来自Oracle的此示例将在与您的应用程序相同的类加载器中运行Tomcat(我认为它确实是嵌入式的)。
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.0</version>
<configuration>
<port>${tomcat.port}</port>
<path>/</path>
</configuration>
<executions>
<execution>
<id>tomcat-run</id>
<goals>
<goal>exec-war-only</goal>
</goals>
<phase>package</phase>
<configuration>
<path>/</path>
<port>${tomcat.port}</port>
<attachArtifactClassifierType>war</attachArtifactClassifierType>
<mainClass>org.apache.tomcat.maven.runner.Tomcat8RunnerCli</mainClass>
<extraDependencies>
<extraDependency>
<groupId>com.nitorcreations</groupId>
<artifactId>tomcat8-war-runner</artifactId>
<version>1.0</version>
</extraDependency>
</extraDependencies>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-core</artifactId>
<version>${tomcat.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-util</artifactId>
<version>${tomcat.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-coyote</artifactId>
<version>${tomcat.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-api</artifactId>
<version>${tomcat.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jdbc</artifactId>
<version>${tomcat.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-dbcp</artifactId>
<version>${tomcat.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-servlet-api</artifactId>
<version>${tomcat.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jsp-api</artifactId>
<version>${tomcat.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jasper</artifactId>
<version>${tomcat.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jasper-el</artifactId>
<version>${tomcat.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-el-api</artifactId>
<version>${tomcat.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-catalina</artifactId>
<version>${tomcat.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-tribes</artifactId>
<version>${tomcat.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-catalina-ha</artifactId>
<version>${tomcat.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-annotations-api</artifactId>
<version>${tomcat.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-juli</artifactId>
<version>${tomcat.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-logging-juli</artifactId>
<version>${tomcat.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-logging-log4j</artifactId>
<version>${tomcat.version}</version>
</dependency>
</dependencies>
</plugin>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7155 次 |
| 最近记录: |