使用本地更改覆盖 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>
我应该删除这个依赖项吗?如果是这样,将新本地修改后的 类 导入我的应用程序的语法是什么?
以下是我建议的工作流程:
- 转到您更改一行的项目。
- 将 pom.xml 中的版本更改为类似“1.4-fixed”的版本。
- 使用 "clean install" 调用 Maven(在那个 "stolen" 项目上)。现在,如果没有错误,版本为 1.4 的 jar 应该在本地存储库 (.m2/repository).
- 在您的旧项目中引用版本“1.4-fixed”(而不是 1.4)并同时构建该项目。
当然,1.4-fixed版本现在只存在于你自己的机器上(除非你将它部署到某个公司Nexus/Artifactory)。
我从 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>
我应该删除这个依赖项吗?如果是这样,将新本地修改后的 类 导入我的应用程序的语法是什么?
以下是我建议的工作流程:
- 转到您更改一行的项目。
- 将 pom.xml 中的版本更改为类似“1.4-fixed”的版本。
- 使用 "clean install" 调用 Maven(在那个 "stolen" 项目上)。现在,如果没有错误,版本为 1.4 的 jar 应该在本地存储库 (.m2/repository).
- 在您的旧项目中引用版本“1.4-fixed”(而不是 1.4)并同时构建该项目。
当然,1.4-fixed版本现在只存在于你自己的机器上(除非你将它部署到某个公司Nexus/Artifactory)。