使用maven設置相對路徑的正確姿勢

一、什麼是相對路徑?

首先在介紹如何使用maven設置相對路徑之前,我們需要先清楚什麼是相對路徑。相對路徑是相對於當前文件路徑的表示,即在不同的目錄下我們可以使用相對路徑來訪問同一份文件。

比如我們有一個項目結構如下:

|
|--- src/
|    |--- main/
|    |    |--- java/
|    |    |--- resources/
|    |    |    |--- properties/
|    |    |    |    |--- db.properties
|    |    |--- webapp/
|    |         |--- WEB-INF/
|    |              |--- jsp/
|    |                   |--- login.jsp
|    |                   |--- index.jsp

我們在login.jsp中想要引用db.properties文件,如果我們使用絕對路徑,就需要寫成:

<%@ page import="java.util.Properties" %>
<%@ page import="java.io.FileInputStream" %>
<% 
   String path = request.getSession().getServletContext().getRealPath("/WEB-INF/classes/properties/db.properties");
   Properties props = new Properties();
   FileInputStream in = new FileInputStream(path);
   props.load(in);
   String url = props.getProperty("url");
   String username = props.getProperty("username");
   String password = props.getProperty("password");
   in.close();
%>

但是如果我們使用相對路徑,就可以寫成:

<%@ page import="java.util.Properties" %>
<%@ page import="java.io.FileInputStream" %>
<% 
   String path = request.getSession().getServletContext().getRealPath("/WEB-INF/classes/properties/db.properties");
   Properties props = new Properties();
   FileInputStream in = new FileInputStream(path);
   props.load(in);
   String url = props.getProperty("url");
   String username = props.getProperty("username");
   String password = props.getProperty("password");
   in.close();
%>

二、如何使用maven設置相對路徑?

Maven是Java開發中使用最廣泛的自動化構建工具之一。在使用Maven構建項目時,我們可以使用${project.basedir}來表示項目的根目錄,這樣就可以避免手動指定絕對路徑的麻煩。以下是一些示例。

三、使用相對路徑指定src文件夾下文件的位置

在Maven項目開發中,除了在webapp目錄下的文件,我們還可能會在src/main/java、src/main/resources或者src/test/java中需要調用其他資源文件,這時使用相對路徑就很方便。

1.設置log4j.properties位置

假如我們的log4j.properties文件在src/main/resources目錄下,它的內容如下:

# 日誌輸出級別
log4j.rootLogger=INFO, stdout
# 控制台輸出
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %t %c{1}:%L - %m%n

在pom.xml文件中,我們可以添加以下配置:

<project>
    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
                <includes>
                    <include>log4j.properties</include>
                </includes>
                <targetPath>../classes</targetPath>
            </resource>
        </resources>
    </build>
</project>

使用Maven命令來構建項目:mvn clean package,在target目錄下會生成一個classes文件夾。其中log4j.properties文件就會出現在classes下了。

2.使用相對路徑設置dubbo.properties位置

同樣道理,我們還可以使用相對路徑來設置dubbo.properties文件的位置。

<project>
    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
                <includes>
                    <include>dubbo.properties</include>
                </includes>
                <targetPath>../classes</targetPath>
            </resource>
        </resources>
    </build>
</project>

這樣一來,在src/main/resources目錄下創建dubbo.properties文件就可以被正常引用了。

四、使用相對路徑指定webapp下文件的位置

1.使用相對路徑指定jsp文件的位置

在web應用中,最常用的就是jsp文件了。假如我們的index.jsp和login.jsp都在webapp/jsp目錄下,而我們的css文件都在webapp/css文件夾下。

|
|--- src/
|    |--- main/
|    |--- webapp/
|    |    |--- css/
|    |    |    |--- style.css
|    |    |--- jsp/
|    |         |--- login.jsp
|    |         |--- index.jsp

在index.jsp中想要使用css文件,我們可以這樣寫:

<link rel="stylesheet" type="text/css" href="../css/style.css">

這裡的../表示返回上一級目錄,也就是從webapp/jsp返回到webapp下。

另外,在我們的login.jsp中想要引用某些js庫的話,可以這樣寫:

<script src="../js/jquery.min.js"></script>

2.使用相對路徑指定web.xml文件的位置

我們知道,web.xml是web應用的配置文件,我們可以配置攔截器、servlet、監聽器等等。在web.xml中,我們有時需要引用其他文件,這時候使用相對路徑就可以避免絕對路徑的麻煩。

例如,我們要在web.xml中引用spring配置文件,可以這樣寫:

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
        classpath:../spring/applicationContext.xml
        classpath:../spring/spring-mybatis.xml
    </param-value>
</context-param>

總結

相對路徑在項目中應用廣泛,而maven的出現為我們的開發過程提供了便利。在使用Maven構建項目時,我們可以使用${project.basedir}來避免手動指定絕對路徑的麻煩,使用相對路徑既方便又實用。

原創文章,作者:ZYZY,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/148836.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
ZYZY的頭像ZYZY
上一篇 2024-11-04 17:48
下一篇 2024-11-04 17:48

相關推薦

  • 如何查看Anaconda中Python路徑

    對Anaconda中Python路徑即conda環境的查看進行詳細的闡述。 一、使用命令行查看 1、在Windows系統中,可以使用命令提示符(cmd)或者Anaconda Pro…

    編程 2025-04-29
  • 如何在代碼中打出正確的橫杆

    在編程中,橫杆是一個很常見的符號,但是有些人可能會在打橫杆時出錯。本文將從多個方面詳細介紹如何在代碼中打出正確的橫杆。 一、正常使用橫杆 在代碼中,直接使用「-」即可打出橫杆。例如…

    編程 2025-04-29
  • Git config命令用法介紹:用正確的郵箱保障開發工作

    本文將詳細介紹如何使用git config命令配置Git的全局和本地用戶信息,特別是如何正確使用用戶郵箱,保障Git操作的正常進行。 一、git config命令介紹 Git中的每…

    編程 2025-04-29
  • Python文件路徑賦值

    Python中文件操作是非常基本的操作,而文件路徑是文件操作的前提。本文將從多個方面闡述如何在Python中賦值文件路徑。 一、絕對路徑和相對路徑 在Python中,路徑可以分為絕…

    編程 2025-04-28
  • 請確保正確設置spring.boot.admin.client.instance

    spring.boot.admin.client.instance是一個非常關鍵的設置,它能夠幫助我們確保應用程序在正確的Spring Boot Admin Server上註冊。在…

    編程 2025-04-28
  • JS圖片沿著SVG路徑移動實現方法

    本文將為大家詳細介紹如何使用JS實現圖片沿著SVG路徑移動的效果,包括路徑製作、路徑效果、以及實現代碼等內容。 一、路徑製作 路徑的製作,我們需要使用到SVG,SVG是可縮放矢量圖…

    編程 2025-04-27
  • Python3文件路徑操作

    Python3中文件路徑操作是日常編程中常用到的基礎操作之一。在Python中,我們可以使用內置庫os來操作文件路徑,包括創建、刪除、移動、複製等文件操作。本文將深度解析Pytho…

    編程 2025-04-27
  • Python文件相對路徑怎麼寫

    Python是一門被廣泛使用的編程語言,Python腳本通常需要對文件進行讀寫操作。而那些需要讀寫的文件,其路徑往往並不在Python腳本的同一目錄下,這就需要我們了解Python…

    編程 2025-04-27
  • 關鍵路徑的詳細闡述

    關鍵路徑是項目管理中非常重要的一個概念,它通常指的是項目中最長的一條路徑,它決定了整個項目的完成時間。在這篇文章中,我們將從多個方面對關鍵路徑做詳細的闡述。 一、概念 關鍵路徑是指…

    編程 2025-04-25
  • 深入了解scala-maven-plugin

    一、簡介 Scala-maven-plugin 是一個創造和管理 Scala 項目的maven插件,它可以自動生成基本項目結構、依賴配置、Scala文件等。使用它可以使我們專註於代…

    編程 2025-04-25

發表回復

登錄後才能評論