使用本地更改覆盖 Maven 依赖时发生冲突

Conflicts when overriding Maven dependency with local changes

我从 Maven 下载了一个库,但需要覆盖其中一个文件中的单个字符串,因此我进入了 IntelliJ 中的 Maven 项目选项卡,并从其 pom.xml 文件中手动添加了位于 C:\Users\mnxe\Documents\parse4j-master\pom.xml。我现在可以从我的项目文件夹结构中访问 .java 文件:

我做了更改,将 API_ENDPOINT 替换为我需要的 URL(仅供参考,https://api.parse.com 不再存在):

package org.parse4j;

public class ParseConstants {

    public static final String API_ENDPOINT = "https://parseapi.back4app.com";
    public static final String API_VERSION = "1";

    public static final String HEADER_CONTENT_TYPE = "Content-Type";
    public static final String HEADER_APPLICATION_ID = "X-Parse-Application-Id";
    public static final String HEADER_REST_API_KEY = "X-Parse-REST-API-Key";
    public static final String HEADER_MASTER_KEY = "X-Parse-Master-Key";
    public static final String HEADER_SESSION_TOKEN = "X-Parse-Session-Token";

    public static final String CONTENT_TYPE_JSON = "application/json";

    public static final String FIELD_OBJECT_ID = "objectId";
    public static final String FIELD_CREATED_AT = "createdAt";
    public static final String FIELD_UPDATED_AT = "updatedAt";
    public static final String FIELD_SESSION_TOKEN = "sessionToken";


    public static int MAX_PARSE_FILE_SIZE = 10485760;

}

我的项目现在应该可以运行了,但出现异常:

3306 [main] ERROR org.parse4j.ParseObject - Request failed.
Exception in thread "main" org.json.JSONException: A JSONObject text must begin with '{' at 1 [character 2 line 1]
    at org.json.JSONTokener.syntaxError(JSONTokener.java:433)
    at org.json.JSONObject.<init>(JSONObject.java:194)
    at org.json.JSONObject.<init>(JSONObject.java:321)
    at org.parse4j.command.ParseResponse.getJsonObject(ParseResponse.java:83)
    at org.parse4j.command.ParseResponse.getException(ParseResponse.java:71)
    at org.parse4j.ParseObject.save(ParseObject.java:492)
    at tmt.main(tmt.java:21)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)

我感觉它仍在调用我的主程序中的旧依赖项 pom.xml:

       <dependency>
            <groupId>com.github.thiagolocatelli</groupId>
            <artifactId>parse4j</artifactId>
            <version>1.4</version>
        </dependency>

我应该删除这个依赖项吗?如果是这样,将新本地修改后的 类 导入我的应用程序的语法是什么?

以下是我建议的工作流程:

  1. 转到您更改一行的项目。
  2. 将 pom.xml 中的版本更改为类似“1.4-fixed”的版本。
  3. 使用 "clean install" 调用 Maven(在那个 "stolen" 项目上)。现在,如果没有错误,版本为 1.4 的 jar 应该在本地存储库 (.m2/repository).
  4. 在您的旧项目中引用版本“1.4-fixed”(而不是 1.4)并同时构建该项目。

当然,1.4-fixed版本现在只存在于你自己的机器上(除非你将它部署到某个公司Nexus/Artifactory)。