Java的Jfinal-undertow,部署打包这一段不会,要怎么弄
Jfinal轻量小型的特点吸引了我,虽然官方有演示项目,但我自己更想hello word搭建项目熟悉熟悉,根据Jfinal文档教程按着自己的理解,从创建项目到main函数运行,使用了tomcat,jetty,undertow,在eclipse内测试成功,但以undertow作为容器打包部署阶段遇到的了难题。
之前的Jfinal-jetty和tomcat-spring boot的项目打成jar包以微服务的方式运行,都是用eclipse的到导出功能的。undertow这个打包部署,要用命令行完成。但这过程遇到了问题。环境是在windows上,如何解决?
打包运行第一个命令,mvc clean package这一块遇到问题,内容如下
E:WorkspaceworkspaceSpringBootmyproject1是项目路径,
项目结构
pom.xml代码,从官方演示项目,jfinal_demo_for_maven/启动说明/jfinal_demo_for_maven/启动说明/fatjar-打包部署方法/pom.xml拷贝大部分的。将一些地方改成了自己的参数
<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.tc</groupId>
<artifactId>myproject1</artifactId>
<version>4.8</version>
<name>myproject1 Maven Webapp</name>
<packaging>jar</packaging>
<url>http://jfinal.com/user/1</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
</properties>
<!-- 使用阿里 maven 库 -->
<repositories>
<repository>
<id>ali-maven</id>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
<checksumPolicy>fail</checksumPolicy>
</snapshots>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.jfinal</groupId>
<artifactId>jfinal-undertow</artifactId>
<version>2.0</version>
</dependency>
<dependency>
<groupId>com.jfinal</groupId>
<artifactId>jfinal</artifactId>
<version>4.8</version>
</dependency>
</dependencies>
<build>
<finalName>jfinal-demo</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
<!-- java8 保留参数名编译参数 -->
<compilerArgument>-parameters</compilerArgument>
<compilerArguments><verbose /></compilerArguments>
</configuration>
</plugin>
<!--
当项目的 web 资源在 src/main/webapp 下时,需要使用 maven-resources-plugin
将 web 资源复制到 jar 包中去,注意打包的时候需要配置 engine:
me.setBaseTemplatePath("webapp");
me.setToClassPathSourceFactory();
如果 web 资源本身就放在 src/main/resources/webapp 之下,则不需要此插件
-->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.1.0</version>
<executions>
<execution>
<id>copy-webapp</id>
<phase>process-sources</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<encoding>UTF-8</encoding>
<outputDirectory>${basedir}/target/classes/webapp</outputDirectory>
<resources>
<resource>
<directory>${basedir}/src/main/webapp</directory>
<includes>
<!-- <include>**/*.xml</include> -->
<!-- <include>**/**</include> -->
</includes>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<finalName>jfinal-demo</finalName>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>common.DemoConfig</mainClass>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.DontIncludeResourceTransformer">
<resources>
</resources>
</transformer>
</transformers>
<!--
解决 fatjar 的 "java.lang.SecurityException: Invalid signature file digest
for Manifest main attributes" 问题
-->
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>
</filters>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
DemoConfig.java里的代码
package common;
import com.jfinal.config.Constants;
import com.jfinal.config.Handlers;
import com.jfinal.config.Interceptors;
import com.jfinal.config.JFinalConfig;
import com.jfinal.config.Plugins;
import com.jfinal.config.Routes;
import com.jfinal.server.undertow.UndertowServer;
import com.jfinal.template.Engine;
import com.tc.module.test.HelloController;
public class DemoConfig extends JFinalConfig {
/**
* 注意:用于启动的 main 方法可以在任意 java 类中创建,在此仅为方便演示
* 才将 main 方法放在了 DemoConfig 中
*
* 开发项目时,建议新建一个 App.java 或者 Start.java 这样的专用
* 启动入口类放置用于启动的 main 方法
*/
public static void main(String[] args) {
UndertowServer.start(DemoConfig.class, 80, true);
}
@Override
public void configConstant(Constants me) {
me.setDevMode(true);
}
@Override
public void configRoute(Routes me) {
me.add("/hello", HelloController.class);
}
@Override
public void configEngine(Engine me) {}
@Override
public void configPlugin(Plugins me) {}
@Override
public void configInterceptor(Interceptors me) {}
@Override
public void configHandler(Handlers me) {}
}
@JFinal ,如何解决?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
引用来自“JFinal”的评论
先在 jfinal.com 官网首页右侧下载 jfinal_demo_for_maven-4.8.zip,直接解压, cd 命令跳转到 jfinal_demo_for_maven 目录下面,最后执行 mvn clean package
确保上面一步能成功,然后再往下走。估计是你的开发环境有问题。上面的步骤是在用排除法,先排除掉项目本身以外的错误因素
已经拿官方演示项目测试,有错误,看起来似乎是maven的问题,但是我对maven部署不怎么熟悉
回复
jfinal 官网有基本的 maven 使用文档,照此文档花三到五分钟应该能搞定: https://jfinal.com/doc
先在 jfinal.com 官网首页右侧下载 jfinal_demo_for_maven-4.8.zip,直接解压, cd 命令跳转到 jfinal_demo_for_maven 目录下面,最后执行 mvn clean package
确保上面一步能成功,然后再往下走。估计是你的开发环境有问题。上面的步骤是在用排除法,先排除掉项目本身以外的错误因素