【问题标题】:Conflicts when overriding Maven dependency with local changes使用本地更改覆盖 Maven 依赖项时发生冲突
【发布时间】:2017-08-20 08:54:00
【问题描述】:

我从 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)

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

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

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

【问题讨论】:

    标签: java xml maven intellij-idea pom.xml


    【解决方案1】:

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

    1. 转到您更改了一行的项目。
    2. 将 pom.xml 中的版本更改为“1.4-fixed”。
    3. 使用“全新安装”调用 Maven(在那个“被盗”项目上)。现在,如果您没有收到任何错误,则版本 1.4-fixed 的 jar 应该在您的本地存储库 (.m2/repository) 中。
    4. 在旧项目(而不是 1.4)中引用“1.4-fixed”版本并构建该项目。

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

    【讨论】:

    • 我会试试这个。谢谢。
    • 您的解决方案符合我的预期,但最终并没有解决我的问题,所以无论如何我都会将其标记为正确。我能够使用新的本地修改回购。我现在遇到了一个不同的例外:2699 [main] ERROR org.parse4j.ParseObject - Request failed.我的问题在这里继续向任何有兴趣的人提问:stackoverflow.com/questions/43063719/…
    猜你喜欢
    • 2015-01-06
    • 1970-01-01
    • 2011-03-12
    • 2013-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多