精华内容
下载资源
问答
  • 在使用 XML 的配置方式来构建 Mybatis 的核心类 SqlSessionFactory 时,遇到了配置文件路径总是写不对的问题。事后看其实就是没有好好看文档,一直在盲人摸象。下面时读取 XML 配置文件的代码:var inputSteam = ...

    1f76b5a2b45ffb54defe6c81b8358f16.png

    在使用 XML 的配置方式来构建 Mybatis 的核心类 SqlSessionFactory 时,遇到了配置文件路径总是写不对的问题。事后看其实就是没有好好看文档,一直在盲人摸象。

    下面时读取 XML 配置文件的代码:

    var inputSteam = Resources.getResourceAsStream("config/mybatis.xml");

    var sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputSteam);

    一开始我是将配置文件放在 src/main/java/com/imxfly/config/mybatis.xml 中,然后读取路径写成:com/imxfly/config/mybatis.xml ,但是提示 java.io.IOException: Could not find resource com/imxfly/config/mybatis.xml。

    所以关键是这里的配置文件路径如何填写,我们知道读取的路径并不是按照当前开发时候的目录结构来的,而是编译后在项目 target 目录下以 classes 目录为 classpath(即类的根目录)去读取的。

    假设我们把配置文件放在 src/main/java/com/imxfly/config 目录下,那么使用 maven compile 编译后去查看 target 目录你会发现找不到这个配置文件,这是因为 Maven 编译的时候默认只读取 src/main/java 目录下的 .java 文件然后编译成 .class 文件,所以你在 target 目录下是找不到我们的配置文件的,怎么解决呢?

    推荐的做法是把这些 XML 配置文件放在 src/main/resources 目录下。

    在官方文档(点击查看)中清楚的描述了这一行为,其中有一句话:

    Within artifact producing source directories (ie. main and test), there is one directory for the language java (under which the normal package hierarchy exists), and one for resources (the structure which is copied to the target classpath given the default resource definition).

    对于 resources 目录,其目录结构会完整的直接拷贝到 target classpath 中,假如我们有如下 src 的目录结构:

    .

    ├── main

    │ ├── java

    │ │ └── com

    │ │ └── imxfly

    │ │ └── App.java

    │ └── resources

    │ └── config

    │ └── mybatis.xml

    └── test

    └── java

    └── com

    └── imxfly

    └── AppTest.java

    那么编译完后的 target 目录结构就是:

    .

    ├── classes

    ├── com

    │ └── imxfly

    │ └── App.class

    └── config

    └── mybatis.xml

    所以我们在代码中读取配置文件的路径就是:

    var inputSteam = Resources.getResourceAsStream("config/mybatis.xml");

    因为默认情况下,Maven 会在 src/main/resources 去寻找项目的资源文件。

    但是如果我们的项目结构不好修改,配置文件就在 src/main/java/com/imxfly/config/mybatis.xml 怎么办?

    此时我们就需要在 Maven 配置文件 pom.xml 中去告诉 Maven 我们的资源文件放在了哪里:

    ...

    ...

    src/main/java/com/imxfly/config

    src/main/java/com/imxfly/config2

    src/main/java/com/imxfly/config3

    ...

    ...

    编译时 Maven 就会把这些目录下的文件结构完整的拷贝到 target 目录下(就像上面完整拷贝 resources 目录一样),所以此时我们的读取路径为:

    var inputSteam = Resources.getResourceAsStream("mybatis.xml");

    参考资料:

    https://maven.apache.org/plugins/maven-resources-plugin/examples/resource-directory.html

    https://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html

    到此这篇关于Maven 的配置文件路径读取方法的文章就介绍到这了,更多相关Maven 配置文件路径读取内容请搜索云海天教程以前的文章或继续浏览下面的相关文章希望大家以后多多支持云海天教程!

    原文链接:https://segmentfault.com/a/1190000022877097

    展开全文
  • 在使用 XML 的配置方式来构建 Mybatis 的核心类 SqlSessionFactory 时,遇到了配置文件路径总是写不对的问题。事后看其实就是没有好好看文档,一直在盲人摸象。下面时读取 XML 配置文件的代码:var inputSteam = ...

    在使用 XML 的配置方式来构建 Mybatis 的核心类 SqlSessionFactory 时,遇到了配置文件路径总是写不对的问题。事后看其实就是没有好好看文档,一直在盲人摸象。

    下面时读取 XML 配置文件的代码:

    var inputSteam = Resources.getResourceAsStream("config/mybatis.xml");

    var sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputSteam);

    一开始我是将配置文件放在 src/main/java/com/imxfly/config/mybatis.xml 中,然后读取路径写成:com/imxfly/config/mybatis.xml ,但是提示 java.io.IOException: Could not find resource com/imxfly/config/mybatis.xml。

    所以关键是这里的配置文件路径如何填写,我们知道读取的路径并不是按照当前开发时候的目录结构来的,而是编译后在项目 target 目录下以 classes 目录为 classpath(即类的根目录)去读取的。

    假设我们把配置文件放在 src/main/java/com/imxfly/config 目录下,那么使用 maven compile 编译后去查看 target 目录你会发现找不到这个配置文件,这是因为 Maven 编译的时候默认只读取 src/main/java 目录下的 .java 文件然后编译成 .class 文件,所以你在 target 目录下是找不到我们的配置文件的,怎么解决呢?

    推荐的做法是把这些 XML 配置文件放在 src/main/resources 目录下。

    在官方文档(点击查看)中清楚的描述了这一行为,其中有一句话:

    Within artifact producing source directories (ie. main and test), there is one directory for the language java (under which the normal package hierarchy exists), and one for resources (the structure which is copied to the target classpath given the default resource definition).

    对于 resources 目录,其目录结构会完整的直接拷贝到 target classpath 中,假如我们有如下 src 的目录结构:

    .

    ├── main

    │   ├── java

    │   │   └── com

    │   │   └── imxfly

    │   │   └── App.java

    │   └── resources

    │   └── config

    │   └── mybatis.xml

    └── test

    └── java

    └── com

    └── imxfly

    └── AppTest.java

    那么编译完后的 target 目录结构就是:

    .

    ├── classes

    ├── com

    │   └── imxfly

    │   └── App.class

    └── config

    └── mybatis.xml

    所以我们在代码中读取配置文件的路径就是:

    var inputSteam = Resources.getResourceAsStream("config/mybatis.xml");

    因为默认情况下,Maven 会在 src/main/resources 去寻找项目的资源文件。

    但是如果我们的项目结构不好修改,配置文件就在 src/main/java/com/imxfly/config/mybatis.xml 怎么办?

    此时我们就需要在 Maven 配置文件 pom.xml 中去告诉 Maven 我们的资源文件放在了哪里:

    ...

    ...

    src/main/java/com/imxfly/config

    src/main/java/com/imxfly/config2

    src/main/java/com/imxfly/config3

    ...

    ...

    编译时 Maven 就会把这些目录下的文件结构完整的拷贝到 target 目录下(就像上面完整拷贝 resources 目录一样),所以此时我们的读取路径为:

    var inputSteam = Resources.getResourceAsStream("mybatis.xml");

    参考资料:

    展开全文
  • 我想知道,我可以使用文件名为artifactid-version.jar来构建jar文件,但是在类路径中没有artifactid-version,就像maven存储库中的每个jar一样.我认为应该有一个选项或方法来命名< outputDirectory>.

    这是pom.xml

    4.0.0

    org.springframework.webflow

    spring-js-resources-thin

    2.2.1.RELEASE

    Spring js lib

    Spring javascript library without dojo

    maven-assembly-plugin

    2.2.1

    src/main/assembly/assembly.xml

    这里是assembly.xml

    js-jar

    jar

    src/main/resources/

    /

    META-INF/**/*

    问题是,每当我打开生成的jar文件(spring-js-resources-thin-2.2.1.RELEASE-js-jar.jar),根文件夹总是命名为artifactid-version(spring-js-resources- thin-2.2.1.RELEASE),然后是META-INF.

    我想知道,我可以使用文件名为artifactid-version.jar来构建jar文件,但是在类路径中没有artifactid-version,就像maven存储库中的每个jar一样.我认为应该有一个选项或方法来命名< outputDirectory>.

    展开全文
  • maven工程中,我们会将配置文件放到,src/main/resources 下面,例如我们需要确认resource 下的文件 编译之后存放的位置它编译的路径直接位于classes下面,这个路径其实就是classPath的路径,所以,在resources ...

    在maven工程中,我们会将配置文件放到,src/main/resources   下面,例如

    我们需要确认resource 下的文件 编译之后存放的位置

    它编译的路径直接位于classes下面,这个路径其实就是classPath的路径,所以,在resources 根目录下的配置文件其实就是 classPath的路径

    public static void main(String[] args) throws ParserConfigurationException, Exception{

    ClassLoader classLoader = TestDom.class.getClassLoader();

    URL resource = classLoader.getResource("test.xml");

    String path = resource.getPath();

    System.out.println(path);

    InputStream resourceAsStream = classLoader.getResourceAsStream("test.xml");

    这样我们就可以直接拿到路径,调用 getResourceAsStream 方法 可以直接拿到目标文件的输入流

    Maven 为我们提供了一致的项目目录配置(源文件夹、资源文件夹等),在自动构建项目时, Maven 会按照这个配置来执行操作(编译源文件、拷贝资源文件)。

    当 Maven 规约的默认配置不能够满足我们的需求时,我们就要动手修改项目的 Maven 配置,让我们的项目能够与 Maven 很好地协同工作。这里讨论的需求有:

    配置多个源文件夹来管理我们项目的模块

    配置多个资源文件夹来管理我们项目模块的资源文件

    有些遗留代码的一些资源文件是放在源文件夹下的,为了不改变原有项目结构,我希望 Maven 能够从源文件夹下读取资源文件

    我想将项目模块的源文件和资源文件放置在同一个文件夹下,以方便开发与维护

    查看maven默认目录结构配置,在项目根路径下查看pom.xml,双击打开点击Effective POM选项,在页面中可以查找到maven默认的目录结构

    D:\workspace\meweb\src\main\java  源代码文件夹

    D:\workspace\meweb\src\main\scripts  脚本

    D:\workspace\meweb\src\test\java 测试代码

    D:\workspace\meweb\target\classes 编译后输出的目录

    D:\workspace\meweb\target\test-classes 测试代码编译输出目录

     资源文件夹,可配置多个

    D:\workspace\meweb\src\main\resources 资源文件目录

     包含的文件

    *.*

    D:\workspace\meweb\src\test\resources 测试资源目录

    D:\workspace\meweb\target

    找到maven目录结构配置,就知道怎么修改配置了,可以在pom.xml 中project -- build标签中配置maven目录结构,使其符合自身项目需要

    修改,源代码路径为src/main,资源路径为src/resources

    src/main

    true

    src/resources

    *.*

    也可以配置多个资源目录

    src/main

    true

    src/resources

    *.*

    test

    *.*

    展开全文
  • 1、pom意思就是project ...3、pom.xml文件是可以继承的,大型项目中,子模块的pom.xml一般都会继承于父模块的pom.xmlpom.xml文件的内容如下:xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven....
  • Maven项目目录结构详解时间:2017-05-05来源:华清远见JAVA学院Maven项目目录结构是什么样的呢?Maven约定了一套规则来创建和构建我们的项目。得益于Maven的一些约定,我们只要学习相对很少的命令就可以创建和管理...
  • ​ 在使用Maven创建项目的时候,常常会遇到配置文件无法加载的问题,此时往往是因为配置文件的相对路径或者绝对路径引用有问题 默认资源目录 ​ maven默认的资源目录是在src/main/resourse文件夹下,此时如果将...
  • 「博客搬家」 原地址: 简书 原发表时间: 2017-03-23Maven 是基于项目对象模型「POM」,可以通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具。本文总结了 Maven 的基本用法。1. Maven 基本配置1.1...
  • 一、Maven是什么Maven是一个用java开发的项目构建工具, 它能使项目构建过程中的编译、测试、发布、文档自动化, 大大减轻了程序员部署负担。二、安装Maven安装maven非常简单,访问Maven官方页下载即可:...
  • 前几天看见一个大神总结classpath文章,觉得特别有用。所以,特此转载...得到的是当前class所在的路径Main.class.getResourceAsStream("");是从当前路径查找资源资源...
  • 2. 拷贝至项目根目录项目根目录即pom.xml文件所在的同级目录,可以在项目根目录下创建文件夹lib,如下图所示:这4个Jar包是识别网页编码所需的包。3. 配置pom.xml,依赖本地Jar配置Jar的dependency,包括groupId,...
  • I have also set up Apache Maven and was able to create a new Maven Java project in Visual Studio Code which compiles and can be debugged. Now I want to take the third party vendor's Hello World ...
  • Maven配置项目使用本地仓库有以下方式实现:1、类似本地仓库,但是属于本地依赖,比如某个JAR包是引用第三方的,直接放在了项目的lib文件夹,那么此时可以如下配置项目的POM:ldapjdkldapjdksystem1.0${basedir}\src...
  • Apache Maven是一个软件项目管理和理解工具。基于项目对象模型(POM)的概念,Maven可以从中央信息管理项目的构建,报告和文档。 Maven下载与环境配置 官网:https://maven.apache.org/ 下载地址:...
  • idea配置maven项目(超详细)

    千次阅读 2021-07-13 18:53:17
    (2)、先在左上角的搜索框输入maven,找到maven后单击,然后在右边的maven home path的右边选择你的maven安装路径,选择到目录就好了,然后点击确定,具体步骤看下图: 在这里插入图片描述 (3)、Local repository ...
  • 新建parent项目新建一个springboot项目或者maven项目都可以,这个无所谓。设置项目maven仓库和编码。建module在parent项目下新建多个module,新建springboot项目或者maven项目都可以。maven项目自己新建包的时候...
  • maven下载完毕之后按照正常的路径配置之后,windows的都是命令窗口执行不了maven -v命令 我们在下载解压apache_maven之后,配置好环境变量,发现windows窗口并不能执行mvn -v的命令。 现象 我们在下载解压apache_...
  • 概览:如何导入maven项目至eclipse中建立自有MavenJava类库服务器建立符合maven代码库标准的自定义类库Maven在管理Java类库方面有巨大的优势,像白衣所说就是非常“环保”。我们平时用IDE开发都是把所需要的类库一股...
  • Maven打包技巧

    千次阅读 2020-12-20 00:03:48
    “打包“这个词听起来比较土,比较正式的说法应该是”构建项目软件包“,具体说就是将项目中的各种文件,比如源代码、编译生成的字节码、配置文件、文档,按照规范的格式生成归档,最常见的当然就是JAR包和WAR包了,...
  • Maven 提倡使用一个共同的标准目录结构,Maven 使用约定优于配置的原则,大家尽可能的遵守这样的目录结构。如下所示: 目录说明 demo-test项目名称 src/main/java项目源码目录 src/main/resources项目...
  • Maven项目有特定的目录结构:如图,我们在创建一个maven工程时,在项目根目录下有三大内容:main、test、pom.xml。其中:main文件夹下是项目的主要源代码,按照包路径来存放test文件夹下是项目的测试类代码,也是...
  • 我想使用maven-dependency-plugin将EAR文件从多模块项目的子模块复制到整个项目目录中。to-deploy/my-project/ear-module-a/ear-module-b/more-modules-1/ear-module-c/ear-module-d/more-modules-2/ear-module-...
  • IDEA配置运行非Maven项目-非常详细

    千次阅读 多人点赞 2021-02-27 16:31:01
    1.2 准备二、正文2.1 使用IDEA打开(Open)项目2.2 打开项目结构(Project Structure)2.2.1 打开方式2.2.2 项目结构配置内容总览2.2.3 project设置2.2.4 Modules设置2.4.5 Artifacts设置2.2.6 Libraries设置2.4.7 ...
  • Maven3.8.1环境配置以及在eclipse2021-6和Idea2021-2中的使用(创建maven项目
  • 本文将介绍如何在eclipse环境下,使用maven对web项目进行配置,并在tomcat容器下进行运行及调试。一、环境准备:1、下载tomcat,可从apache官网上尽心下载,本文不做赘述。2、下载eclipse,做java开发必备的IDE,...
  • maven工程读取resource下配置文件在maven工程中,我们会将配置文件放到,src/main/resources 下面,例如我们需要确认resource 下的文件 编译之后存放的位置它编译的路径直接位于classes下面,这个路径其实就是...
  • 问题1:什么是Maven项目Maven项目:Apache 组织下的一个跨平台的项目管理工具,它主要用来帮助实现项目的编译、测试、打包和部署。(通俗的说,一个是JavaEE项目自动化构建工具) 问题2:什么是构建? 构建是指一...
  • 1、创建一个Java项目1)File-...Maven Projet2)选择maven-archetype-quickstart3)输入项目的信息4)生成的Java项目包结构如下5)修改pom.xml,指定编译时的JDK版本4.0.0cn.luxh.appmy-app0.0.1-SNAPSHOTjarmy-apphttp:/...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 33,132
精华内容 13,252
关键字:

maven配置项目根路径