我正在尝试使用Gradle从Nexus服务器复制最新的jar文件(com.bar.baz:mapping:0.0.1-snapshot
)。
apply plugin: "java"
repositories {
maven {
credentials {
username = "${mavenUser}"
password = "${mavenPassword}"
}
url "https://nexus.cluster.foo.cloud/repository/maven-snapshots"
authentication {
basic(BasicAuthentication)
}
}
}
configurations {
copyConf
}
dependencies {
copyConf group: "com.bar.baz", name: "mapping", version: "0.0.1-20190508.085532-7"
}
task copyTask(type: Copy) {
from configurations.copyConf
into "."
}
使用版本“latest.integration”
而不是“0.0.1-20190508.085532-7”
(并调用Gradle copyTask--refresh-dependencies--stacktrace
)将得到:
FAILURE: Build failed with an exception.
* What went wrong: Could not resolve all files for configuration ':copyConf'.
> Could not find any matches for com.bar.baz:mapping:latest.integration as no versions
of com.bar.baz:mapping are available. Searched in
the following locations:
https://nexus.cluster.foo.cloud/repository/maven-snapshots/com/ba/baz/mapping/maven-metadata.xml
https://nexus.cluster.foo.cloud/repository/maven-snapshots/com/bar/baz/mapping/0.0.1-SNAPSHOT/maven-metadata.xml
https://nexus.cluster.foo.cloud/repository/maven-snapshots/com/bar/baz/mapping/0.0.1-SNAPSHOT/mapping-0.0.1-20190508.085534-8.pom
https://nexus.cluster.foo.cloud/repository/maven-snapshots/com/bar/baz/mapping/0.0.1-SNAPSHOT/mapping-0.0.1-20190508.085534-8.jar
Required by:
project :
* Try: Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Exception is: org.gradle.api.internal.artifacts.ivyservice.DefaultLenientConfiguration$ArtifactResolveException:
Could not resolve all files for configuration ':copyConf'.
at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.rethrowFailure(DefaultConfiguration.java:918)
at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.access$1600(DefaultConfiguration.java:116)
at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration$ConfigurationFileCollection.getFiles(DefaultConfiguration.java:892)
at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.getFiles(DefaultConfiguration.java:404)
at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration_Decorated.getFiles(Unknown
Source)
at org.gradle.api.internal.file.collections.DefaultFileCollectionResolveContext$FileTreeConverter.convertInto(DefaultFileCollectionResolveContext.java:206)
at org.gradle.api.internal.file.collections.DefaultFileCollectionResolveContext.doResolve(DefaultFileCollectionResolveContext.java:116)
…
更新:
使用版本“0.0.1-snapshot”
而不是“0.0.1-20190508.085532-7”
(并调用Gradle CopyTask--Refresh-Dependencies--StackTrace
)会产生几乎相同的错误,唯一的区别是:
>
第2行改为:
找不到com.bar.baz:映射:0.0.1-快照。
位置https://nexus.cluster.foo.cloud/repository/maven-snapshots/com/ba/baz/mapping/maven-metadata.xml
中没有搜索
使用版本“0.0.1”
而不是“0.0.1-20190508.085532-7”
(并调用Gradle copyTask--Refresh-Dependencies--StackTrace
)将得到:
FAILURE: Build failed with an exception.
* What went wrong:
Could not resolve all files for configuration ':copyConf'.
> Could not resolve com.bar.baz:mapping:0.0.1.
Required by:
project :
> Could not resolve com.bar.baz:mapping:0.0.1.
> Could not get resource 'https://nexus.cluster.regulator.cloud/repository/maven-snapshots/com/bar/baz/mapping/0.0.1/mapping-0.0.1.pom'.
> Could not GET 'https://nexus.cluster.regulator.cloud/repository/maven-snapshots/com/bar/baz/mapping/0.0.1/mapping-0.0.1.pom'. Received status code 400 from server: Bad Request
* Try:
Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Exception is:
org.gradle.api.internal.artifacts.ivyservice.DefaultLenientConfiguration$ArtifactResolveException: Could not resolve all files for configuration ':copyConf'.
at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.rethrowFailure(DefaultConfiguration.java:918)
...
另一个更新:
使用maven从nexus服务器复制最新的jar文件确实有效,使用以下pom.xml:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.bar.baz</groupId>
<artifactId>TAndMapping</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>${project.artifactId}</name>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<mapping>mapping</mapping>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>3.1.1</version>
<executions>
<execution>
<id>copy</id>
<phase>package</phase>
<goals>
<goal>copy</goal>
</goals>
</execution>
</executions>
<configuration>
<artifactItems>
<artifactItem>
<groupId>com.bar.baz</groupId>
<artifactId>${mapping}</artifactId>
<version>0.0.1-SNAPSHOT</version>
<type>jar</type>
<overWrite>true</overWrite>
<destFileName>${mapping}.jar</destFileName>
</artifactItem>
</artifactItems>
<overWriteSnapshots>true</overWriteSnapshots>
</configuration>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>nexus-snapshots</id>
<name>Snapshot</name>
<url>https://nexus.cluster.regulator.cloud/repository/maven-snapshots/</url>
</repository>
</repositories>
</project>
另一个更新:切换到Gradle5.4.1,我得到了一些不同的stacktraces:
对于版本0.0.1
:
另一个更新:由于@Louis Jacomet的回答,我更详细地查看了我们的Nexus服务器,当前,.../com/bar/baz/mapping/0.0.1-snapshot/maven-metadata.xml
列出了:
<metadata modelVersion="1.1.0">
<groupId>com.bar.baz</groupId>
<artifactId>mapping</artifactId>
<version>0.0.1-SNAPSHOT</version>
<versioning>
<snapshot>
<timestamp>20190516.163117</timestamp>
<buildNumber>2</buildNumber>
</snapshot>
<lastUpdated>20190516163117</lastUpdated>
<snapshotVersions>
<snapshotVersion>
<extension>jar</extension>
<value>0.0.1-20190516.163116-1</value>
<updated>20190516163117</updated>
</snapshotVersion>
<snapshotVersion>
<extension>pom</extension>
<value>0.0.1-20190516.163116-1</value>
<updated>20190516163117</updated>
</snapshotVersion>
</snapshotVersions>
</versioning>
</metadata>
因此,gradle在https://nexus.cluster.regulator.cloud/repository/maven-Snapshots/com/bar/baz/mapping/0.0.1-snapshot/mapping-0.0.1-20190516.163117-2.jar
中进行搜索。它找不到它,因为Nexus服务器上唯一可用的版本是版本0.0.1-20190516.163116-1
。我不明白为什么会这样,我猜这是一个Nexus bug而不是Gradle bug。但是,通过Maven进行复制(请参阅pom.xml的第二次更新)仍然可以在Nexus上找到0.0.1快照版本并下载它。
看来你要
org.gradle.internal.resource.transport.http.HttpErrorStatusCodeException: Could not GET 'https://nexus.cluster.regulator.cloud/repository/maven-snapshots/com/bar/baz/mapping/0.0.1/mapping-0.0.1.pom'. Received status code 400 from server: Bad Request
鉴于此,最有可能的解释是存储库的配置是错误的。检查为Maven设置的身份验证类型,或者在接受到Nexus实例的连接之前检查您的内部组织是否进行了其他检查。
因此很明显,Nexus中的maven-metadata.xml
文件与Gradle解析的内容不匹配。
if ("metadata/versioning/snapshot/timestamp".equals(getContext())) {
mavenMetadata.timestamp = getText();
}
if ("metadata/versioning/snapshot/buildNumber".equals(getContext())) {
mavenMetadata.buildNumber = getText();
}
if ("metadata/versioning/versions/version".equals(getContext())) {
mavenMetadata.versions.add(getText().trim());
}
有两种选择:
maven-metadata.xml
不一致性。subproject_c中的gradle文件将subproject_a和subproject_b生成的jar复制到自己的libs文件夹中进行编译。 文件被复制(也就是说,jar文件的名称显示在subproject_c的libs文件夹中),但它们完全是空的。 这是subproject_cgradle文件中进行复制的部分。
我必须从FTP服务器下载最新文件。我知道如何从我的计算机下载最新文件,但我不知道如何从FTP服务器下载。 如何从FTP服务器下载最新文件? 这是我从电脑上下载最新文件的程序 好的,使用此代码我知道最后一个文件的日期,但我如何知道这个文件的名称?????????
试图从jcifs转移到jcifs-ng(最新的jar jcifs-ng-2.1.2.jar)以将文件复制到/从远程。我使用旧JCIFS的代码: 在stackoverflow中找到的示例很少,但看起来它们已经过时了。
问题内容: 我想编写连接到我的大学SFTP服务器的脚本,并通过练习下载最新文件。到目前为止,我已经从Paramiko示例中更改了一些代码,但是我不知道如何下载最新文件。 这是我的代码: 问题答案: 使用而不是来获得具有属性(包括文件时间戳记)的列表。 然后,找到具有最大属性的文件条目。 代码如下:
问题描述: 我正在使用Gradle Shade插件,它一切正常,它将资源文件复制到最终的jar。但是,正如文档所说,它不能包含其他文件作为资源,因为它无法将它们与依赖项区分开来。它解压缩它们是ntead。 我想做的是:我想复制额外的代码。jar
我试图从客户端复制文件到服务器,在Java,像这样: 客户: 服务器: 当我跑步时,我得到: 但什么都没发生。这是我第一次使用客户机服务器,我不确定自己出了什么问题。 请帮帮忙。谢谢你。