Java的Jfinal-undertow,部署打包这一段不会,要怎么弄

齿轮1 发布于 03/05 16:07
阅读 501
收藏 0

华为云11月刊推送:DIY微信问答机器人,高性能计算代码的20个技巧!>>>

Jfinal轻量小型的特点吸引了我,虽然官方有演示项目,但我自己更想hello word搭建项目熟悉熟悉,根据Jfinal文档教程按着自己的理解,从创建项目到main函数运行,使用了tomcat,jetty,undertow,在eclipse内测试成功,但以undertow作为容器打包部署阶段遇到的了难题。

之前的Jfinal-jetty和tomcat-spring boot的项目打成jar包以微服务的方式运行,都是用eclipse的到导出功能的。undertow这个打包部署,要用命令行完成。但这过程遇到了问题。环境是在windows上,如何解决?

打包运行第一个命令,mvc clean package这一块遇到问题,内容如下

E:\Workspace\workspaceSpringBoot\myproject1是项目路径,

 

项目结构

 

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 ,如何解决?

 

加载中
0
JFinal
JFinal

先在 jfinal.com 官网首页右侧下载 jfinal_demo_for_maven-4.8.zip,直接解压, cd 命令跳转到 jfinal_demo_for_maven 目录下面,最后执行 mvn clean package

 

确保上面一步能成功,然后再往下走。估计是你的开发环境有问题。上面的步骤是在用排除法,先排除掉项目本身以外的错误因素

JFinal
JFinal
回复 @齿轮1 : jfinal 官网有基本的 maven 使用文档,照此文档花三到五分钟应该能搞定: https://jfinal.com/doc
齿
齿轮1
已经拿官方演示项目测试,有错误,看起来似乎是maven的问题,但是我对maven部署不怎么熟悉
0
齿
齿轮1

引用来自“JFinal”的评论

先在 jfinal.com 官网首页右侧下载 jfinal_demo_for_maven-4.8.zip,直接解压, cd 命令跳转到 jfinal_demo_for_maven 目录下面,最后执行 mvn clean package

 

确保上面一步能成功,然后再往下走。估计是你的开发环境有问题。上面的步骤是在用排除法,先排除掉项目本身以外的错误因素

使用了官方演示项目,直接用cmd跳转目录运行 mvn clean package

maven 里的setting文件

<?xml version="1.0" encoding="UTF-8"?>

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
  
  <localRepository>E:/Workspace/maven_repository</localRepository>

  <interactiveMode>true</interactiveMode>

  <offline>false</offline>

  <pluginGroups></pluginGroups>

  <proxies></proxies>

  <servers></servers>

  <mirrors>
      <id>nexus-aliyun</id>

       <mirrorOf>*</mirrorOf>

       <name>Nexus aliyun</name>

       <url>http://maven.aliyun.com/nexus/content/groups/public</url>
  </mirrors>

  <profiles></profiles>

  <activeProfiles></activeProfiles>

</settings>

 

返回顶部
顶部