Gradle - 获取 MavenDeployer URL
Gradle - Get the MavenDeployer URL
我目前正在尝试在任务中获取 Maven Deployer 的 URL,但它失败了。我能够获得 Maven Deployer 本身,但在调用方法 mavenDeployer.getRepository()
.
时显然无法创建 RemoteRepository 类型的对象
这是 build.gradle
文件:
uploadArchives {
repositories {
mavenDeployer {
repository(url: "file:///path/to/maven/repo/")
}
}
}
在我的任务中:
Upload uploadArchives = project.getTasks().withType(Upload.class)
.findByName(BasePlugin.UPLOAD_ARCHIVES_TASK_NAME);
for(ArtifactRepository repo : uploadArchives.getRepositories()) {
if (repo instanceof MavenDeployer) {
MavenDeployer mavenDeployer = (MavenDeployer) repo;
System.out.println(repo) //Returns org.apache.maven.artifact.ant.RemoteRepository
RemoteRepository l = (RemoteRepository) mavenDeployer.getRepository() // Crashes here
}
}
显示:
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':myTask'.
> org/apache/maven/artifact/ant/RemoteRepository
堆栈跟踪结束于:
Caused by: java.lang.ClassNotFoundException: org.apache.maven.artifact.ant.RemoteRepository
显然,Gradle 无法找到 class org.apache.maven.artifact.ant.RemoteRepository
,即使我已成功导入它。如果我注释掉创建 class MavenDeployer
的行,它工作正常。
有办法解决这个问题吗?如果没有,是否有另一种方法来获取 Maven Deployer 的存储库 URL?
构建脚本类加载器不公开 RemoteRepository。但你应该能够解决这些信息,感谢 groovys ducktyping:
task printDeployerUrl << {
tasks.withType(Upload) { uploadTask ->
for(ArtifactRepository repo : uploadArchives.getRepositories()) {
if (repo instanceof MavenDeployer) {
MavenDeployer mavenDeployer = (MavenDeployer) repo;
System.out.println(repo.repository.url)
}
}
}
}
我目前正在尝试在任务中获取 Maven Deployer 的 URL,但它失败了。我能够获得 Maven Deployer 本身,但在调用方法 mavenDeployer.getRepository()
.
这是 build.gradle
文件:
uploadArchives {
repositories {
mavenDeployer {
repository(url: "file:///path/to/maven/repo/")
}
}
}
在我的任务中:
Upload uploadArchives = project.getTasks().withType(Upload.class)
.findByName(BasePlugin.UPLOAD_ARCHIVES_TASK_NAME);
for(ArtifactRepository repo : uploadArchives.getRepositories()) {
if (repo instanceof MavenDeployer) {
MavenDeployer mavenDeployer = (MavenDeployer) repo;
System.out.println(repo) //Returns org.apache.maven.artifact.ant.RemoteRepository
RemoteRepository l = (RemoteRepository) mavenDeployer.getRepository() // Crashes here
}
}
显示:
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':myTask'.
> org/apache/maven/artifact/ant/RemoteRepository
堆栈跟踪结束于:
Caused by: java.lang.ClassNotFoundException: org.apache.maven.artifact.ant.RemoteRepository
显然,Gradle 无法找到 class org.apache.maven.artifact.ant.RemoteRepository
,即使我已成功导入它。如果我注释掉创建 class MavenDeployer
的行,它工作正常。
有办法解决这个问题吗?如果没有,是否有另一种方法来获取 Maven Deployer 的存储库 URL?
构建脚本类加载器不公开 RemoteRepository。但你应该能够解决这些信息,感谢 groovys ducktyping:
task printDeployerUrl << {
tasks.withType(Upload) { uploadTask ->
for(ArtifactRepository repo : uploadArchives.getRepositories()) {
if (repo instanceof MavenDeployer) {
MavenDeployer mavenDeployer = (MavenDeployer) repo;
System.out.println(repo.repository.url)
}
}
}
}