gpt4 book ai didi

java - mvn包不包含xml

转载 作者:行者123 更新时间:2023-12-01 10:03:43 24 4
gpt4 key购买 nike

我使用的是mybatis 3.3.1版本,并将mybatis配置文件mybatis-conf.xml放在SqlSessionFactoryManager所在目录。

我通过mvn package创建了可执行jar,但SqlSessionFactoryManager告诉一个错误

java.io.IOException: Could not find resource kr/stocktalk/mybatis/mybatis-conf.xml
at org.apache.ibatis.io.Resources.getResourceAsStream(Resources.java:114)

这是SqlSessionFactoryManager的代码片段

try {

String resource = "kr/stocktalk/mybatis/mybatis-conf.xml";
Reader reader = Resources.getResourceAsReader(resource);

if (sqlSessionFactory == null) {
sqlSessionFactory = new SqlSessionFactoryBuilder()
.build(reader);
}
} catch (Exception e) {
e.printStackTrace();
}

我认为发生异常是mybatis-conf.xml未包含executable-jar

所以我尝试在里面添加include代码maven-jar-plugin

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<excludes>
<exclude>logback.xml</exclude>
</excludes>
<includes>
<include>**/*.xml</include>
<include>**/*.class</include>
</includes>
<archive>
<manifest>
<mainClass>kr.stocktalk.chat.ChatServer</mainClass>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
</manifest>
</archive>
</configuration>
</plugin>

但是可执行 jar 文件中不包含 xml 文件。

如何包含 *.xml 文件?

这是所有 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/xsd/maven-4.0.0.xsd">
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
<modelVersion>4.0.0</modelVersion>
<groupId>kr.stocktalk</groupId>
<artifactId>stocktalk-chat</artifactId>
<version>0.0.1-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<executions>
<execution>
<goals>
<goal>java</goal>
</goals>
</execution>
</executions>
<configuration>
<mainClass>kr.stocktalk.chat.ChatServer</mainClass>
<!-- <arguments> <argument>foo</argument> <argument>bar</argument> </arguments> -->
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.5.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<!-- <compilerArgument>-Xlint:all</compilerArgument> -->
<showWarnings>true</showWarnings>
<showDeprecation>true</showDeprecation>
<encoding>UTF-8</encoding>
</configuration>
</plugin>

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.3</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
</execution>
</executions>
<configuration>
<!-- eclipse 에서는 target 밑의 lib 에 생성 됨 -->
<outputDirectory>target/lib</outputDirectory>
<overWriteIfNewer>true</overWriteIfNewer>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<excludes>
<exclude>logback.xml</exclude>
</excludes>
<includes>
<include>**/*.xml</include>
<include>**/*.class</include>
</includes>
<archive>
<manifest>
<mainClass>kr.stocktalk.chat.ChatServer</mainClass>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>

<resources>
<resource>
<directory>src/main/resources</directory>
<targetPath>${basedir}/target/resources</targetPath>
</resource>
<!-- <resource>
<directory>src/main/java</directory>
<targetPath>${basedir}/target</targetPath>
<excludes>
<exclude>*.java</exclude>
</excludes>
</resource> -->
</resources>

</build>
<dependencies>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-core</artifactId>
<version>1.10.68</version>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-datapipeline</artifactId>
<version>1.10.68</version>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-dynamodb</artifactId>
<version>1.10.68</version>
</dependency>
<dependency>
<groupId>com.ganyo</groupId>
<artifactId>gcm-server</artifactId>
<version>1.0.2</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.7</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.1.2</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>1.7.7</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.3.1</version>
</dependency>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-all</artifactId>
<version>4.0.36.Final</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.8</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.6.2</version>
</dependency>
<dependency>
<groupId>net.sourceforge.jtds</groupId>
<artifactId>jtds</artifactId>
<version>1.3.1</version>
</dependency>
</dependencies>
</project>

最佳答案

可以使用绝对或相对路径访问资源。您的路径 "kr/stocktalk/mybatis/mybatis-conf.xml" 是一个相对路径(相对于它所使用的类) - 但它看起来更像是您想要指定一个绝对资源路径.

因此,如果您的 SqlSessionFactoryManager 位于包 kr.stocktalk.mybatis 中,它会尝试加载资源 kr.stocktalk.mybatis.kr.stocktalk.mybatis .mybatis-conf.xml.

您应该通过在开头添加斜杠来使资源路径成为绝对路径:

“/kr/stocktalk/mybatis/mybatis-conf.xml”

关于java - mvn包不包含xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36618839/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com