【发布时间】:2025-12-18 19:40:01
【问题描述】:
当我将插件发布到我们的自定义 Artifactory 存储库时,我想排除 .svn 文件夹。我假设包含 .svn 文件夹是基于下面提供的错误跟踪跟踪的问题。
我正在使用以下命令发布:
gradlew artifactoryPublish --stacktrace
这是build.gradle中的发布块:
artifactory {
contextUrl = artifactory_context
publish {
repository {
repoKey = 'plugins-release-local'
username = artifactory_user
password = artifactory_password
maven = true
}
defaults {
publications ('mavenJava')
}
}
}
publishing {
publications {
mavenJava(MavenPublication) {
from components.java
}
}
}
这是我尝试发布时得到的堆栈跟踪,注意.svn/entries 到assets/entries 的尝试副本。
...
:copyAssets FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':copyAssets'.
> Could not copy file '/u01/var/build/pluginXYZ/grails-app/assets/.svn/entries' to '/u01/var/build/pluginXYZ/build/resources/main/META-INF/assets/entries'.
* Try:
Run with --info or --debug option to get more log output.
* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':copyAssets'.
...
Caused by: org.gradle.api.GradleException: Could not copy file '/u01/var/build/pluginXYZ/grails-app/assets/.svn/entries' to '/u01/var/build/pluginXYZ/build/resources/main/META-INF/assets/entries'.
...
Caused by: java.io.FileNotFoundException: /u01/var/build/pluginXYZ/build/resources/main/META-INF/assets/entries (Permission denied)
... 80 more
entries(两棵树)的权限是-r--r--r--。
如果我排除这些文件夹,我应该摆脱上述权限问题。第一次结帐总是会发布,但随后的发布(比如在更新之后)会因此错误而失败。
更新 #2
以下是我尝试过的三种组合,但均未成功:
publishing {
publications {
mavenJava(MavenPublication) {
from components.java
//first attempt
//exclude("**/.svn/**")
//second attempt
//exclude{ details -> details.file.name.contains(".svn") }
//third attempt
//exclude "**/.svn/**"
}
}
}
使用所有三种尝试发布时的错误输出如下:
Caused by: org.gradle.api.internal.MissingMethodException: Could not find method exclude() for arguments [build_3nsvrqvwahy23ir3fxdj970id$_run_closure7_closure13_closure14_closure15@10e9a5fe] on org.gradlpublish.maven.internal.publication.DefaultMavenPublication_Decorated@ca7e37f.
更新 #3
我找到了以下链接taking about excluding files。
然后我将我的gradle.build 调整为:
publishing {
publications {
mavenJava(MavenPublication) {
from components.java {
exclude "**/.svn/**"
}
}
}
}
同样的错误。
更新 #4
更多尝试...相同的结果
publishing {
publications {
mavenJava(MavenPublication) {
from components.java
artifact sourceJar{
exclude '**/.svn/**'
}
}
}
}
或
publishing {
publications {
mavenJava(MavenPublication) {
from components.java
artifact exclude '**/.svn/**'
}
}
}
【问题讨论】:
标签: gradle build.gradle gradlew