指定依赖项 POM 的字符编码 XML
Specify character encoding of a dependency POM XML
问题
当 运行 gradle jar
时,我收到以下错误消息。
FAILURE: Build failed with an exception.
* What went wrong:
Could not resolve all files for configuration ':compileClasspath'.
> Could not resolve javax.units:jsr108:0.01.
Required by:
project : > org.geotools:gt2-metadata:2.5-M1
project : > org.geotools:gt2-metadata:2.5-M1 > org.opengis:geoapi-nogenerics:2.1-M8
> Could not resolve javax.units:jsr108:0.01.
> Could not parse POM http://download.osgeo.org/webdav/geotools/javax/units/jsr108/0.01/jsr108-0.01.pom
> Invalid byte 2 of 3-byte UTF-8 sequence.
我用 Gradle 4.1(目前最新的)和 Gradle 3.2.1 测试了这个,它们给出了同样的错误。
的确,查看 URL in the error, it can be seen that the encoding of that file is Windows-1252, not UTF-8 处的 POM 文件。 为什么 错误发生很清楚,但是我该如何解决?我无法控制 POM 文件的字符编码。 如何告诉 Gradle 非 UTF-8 编码?
重现此问题
这是一个用于重现错误的最小项目。
build.gradle
apply plugin: 'java'
repositories {
maven {
url 'http://download.osgeo.org/webdav/geotools'
}
}
dependencies {
// https://mvnrepository.com/artifact/org.geotools/gt2-metadata
compile group: 'org.geotools', name: 'gt2-metadata', version: '2.5-M1'
}
src/main/java/HelloWorld.java
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
杂项信息
$ gradle -v
------------------------------------------------------------
Gradle 4.1
------------------------------------------------------------
Build time: 2017-08-07 14:38:48 UTC
Revision: 941559e020f6c357ebb08d5c67acdb858a3defc2
Groovy: 2.4.11
Ant: Apache Ant(TM) version 1.9.6 compiled on June 29 2015
JVM: 1.8.0_141 (Oracle Corporation 25.141-b15)
OS: Linux 4.11.0-2-amd64 amd64
$ java -version
openjdk version "1.8.0_141"
OpenJDK Runtime Environment (build 1.8.0_141-8u141-b15-3-b15)
OpenJDK 64-Bit Server VM (build 25.141-b15, mixed mode)
很抱歉,我认为没有办法做到这一点,我已经尝试修改 gradle 依赖项的配置,但似乎没有办法混合在编码中。
Gradle 直接从 JVM 派生它的字符编码,并且似乎没有办法指定具有不同编码的依赖项。该依赖项的问题还在于它明确指出编码是 UTF-8,但随后文件已写入 Windows-1252 ..
您可以在
上指定
JAVA_OPTS=-Dfile.encoding=Windows-1252
那应该解析你的 .gradle 文件和 Windows-1252 中的依赖项......如果失败你可以尝试使用不依赖的 g2-Metadata 库版本在 jsr 库上。
如果您知道您不会使用 jsr 库中的任何内容,那么可以这样定义它:
compile (group: 'org.geotools', name: 'gt2-metadata', version: '2.5-M1') {
exclude module: "jsr108"
}
另一种可能性是手动下载 JAR 并使用该引用将项目配置为 运行。似乎错误是下载过程的一部分,如果您绕过该过程,源代码将编译并 运行.
在 mvnrepository.com 上有一个下载 link。
您可以将 JAR 安装到 Maven 本地存储库中
/home/you/.m2/repository/org/geotools/gt2-metadata/2.5-M1/gt2-metadata-2.5-M1.jar
你可以通过不依赖运行宁gradle jar
并查看错误消息来找到这个路径。在下面,以 file:
开头的第二行是您要安装 JAR 的路径。
* What went wrong:
Could not resolve all files for configuration ':compileClasspath'.
> Could not find org.geotools:gt2-metadata:2.5-M1.
Searched in the following locations:
file:/home/you/.m2/repository/org/geotools/gt2-metadata/2.5-M1/gt2-metadata-2.5-M1.pom
file:/home/you/.m2/repository/org/geotools/gt2-metadata/2.5-M1/gt2-metadata-2.5-M1.jar
https://repo1.maven.org/maven2/org/geotools/gt2-metadata/2.5-M1/gt2-metadata-2.5-M1.pom
https://repo1.maven.org/maven2/org/geotools/gt2-metadata/2.5-M1/gt2-metadata-2.5-M1.jar
Required by:
project :
这是我的 build.gradle
文件:
apply plugin: 'java'
apply plugin: 'application'
mainClassName = 'hello.HelloWorld'
repositories {
mavenLocal()
mavenCentral()
}
dependencies {
// https://mvnrepository.com/artifact/org.geotools/gt2-metadata
compile group: 'org.geotools', name: 'gt2-metadata', version: '2.5-M1'
}
问题
当 运行 gradle jar
时,我收到以下错误消息。
FAILURE: Build failed with an exception.
* What went wrong:
Could not resolve all files for configuration ':compileClasspath'.
> Could not resolve javax.units:jsr108:0.01.
Required by:
project : > org.geotools:gt2-metadata:2.5-M1
project : > org.geotools:gt2-metadata:2.5-M1 > org.opengis:geoapi-nogenerics:2.1-M8
> Could not resolve javax.units:jsr108:0.01.
> Could not parse POM http://download.osgeo.org/webdav/geotools/javax/units/jsr108/0.01/jsr108-0.01.pom
> Invalid byte 2 of 3-byte UTF-8 sequence.
我用 Gradle 4.1(目前最新的)和 Gradle 3.2.1 测试了这个,它们给出了同样的错误。
的确,查看 URL in the error, it can be seen that the encoding of that file is Windows-1252, not UTF-8 处的 POM 文件。 为什么 错误发生很清楚,但是我该如何解决?我无法控制 POM 文件的字符编码。 如何告诉 Gradle 非 UTF-8 编码?
重现此问题
这是一个用于重现错误的最小项目。
build.gradle
apply plugin: 'java'
repositories {
maven {
url 'http://download.osgeo.org/webdav/geotools'
}
}
dependencies {
// https://mvnrepository.com/artifact/org.geotools/gt2-metadata
compile group: 'org.geotools', name: 'gt2-metadata', version: '2.5-M1'
}
src/main/java/HelloWorld.java
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
杂项信息
$ gradle -v
------------------------------------------------------------
Gradle 4.1
------------------------------------------------------------
Build time: 2017-08-07 14:38:48 UTC
Revision: 941559e020f6c357ebb08d5c67acdb858a3defc2
Groovy: 2.4.11
Ant: Apache Ant(TM) version 1.9.6 compiled on June 29 2015
JVM: 1.8.0_141 (Oracle Corporation 25.141-b15)
OS: Linux 4.11.0-2-amd64 amd64
$ java -version
openjdk version "1.8.0_141"
OpenJDK Runtime Environment (build 1.8.0_141-8u141-b15-3-b15)
OpenJDK 64-Bit Server VM (build 25.141-b15, mixed mode)
很抱歉,我认为没有办法做到这一点,我已经尝试修改 gradle 依赖项的配置,但似乎没有办法混合在编码中。
Gradle 直接从 JVM 派生它的字符编码,并且似乎没有办法指定具有不同编码的依赖项。该依赖项的问题还在于它明确指出编码是 UTF-8,但随后文件已写入 Windows-1252 ..
您可以在
上指定JAVA_OPTS=-Dfile.encoding=Windows-1252
那应该解析你的 .gradle 文件和 Windows-1252 中的依赖项......如果失败你可以尝试使用不依赖的 g2-Metadata 库版本在 jsr 库上。
如果您知道您不会使用 jsr 库中的任何内容,那么可以这样定义它:
compile (group: 'org.geotools', name: 'gt2-metadata', version: '2.5-M1') {
exclude module: "jsr108"
}
另一种可能性是手动下载 JAR 并使用该引用将项目配置为 运行。似乎错误是下载过程的一部分,如果您绕过该过程,源代码将编译并 运行.
在 mvnrepository.com 上有一个下载 link。
您可以将 JAR 安装到 Maven 本地存储库中
/home/you/.m2/repository/org/geotools/gt2-metadata/2.5-M1/gt2-metadata-2.5-M1.jar
你可以通过不依赖运行宁gradle jar
并查看错误消息来找到这个路径。在下面,以 file:
开头的第二行是您要安装 JAR 的路径。
* What went wrong:
Could not resolve all files for configuration ':compileClasspath'.
> Could not find org.geotools:gt2-metadata:2.5-M1.
Searched in the following locations:
file:/home/you/.m2/repository/org/geotools/gt2-metadata/2.5-M1/gt2-metadata-2.5-M1.pom
file:/home/you/.m2/repository/org/geotools/gt2-metadata/2.5-M1/gt2-metadata-2.5-M1.jar
https://repo1.maven.org/maven2/org/geotools/gt2-metadata/2.5-M1/gt2-metadata-2.5-M1.pom
https://repo1.maven.org/maven2/org/geotools/gt2-metadata/2.5-M1/gt2-metadata-2.5-M1.jar
Required by:
project :
这是我的 build.gradle
文件:
apply plugin: 'java'
apply plugin: 'application'
mainClassName = 'hello.HelloWorld'
repositories {
mavenLocal()
mavenCentral()
}
dependencies {
// https://mvnrepository.com/artifact/org.geotools/gt2-metadata
compile group: 'org.geotools', name: 'gt2-metadata', version: '2.5-M1'
}