include single directory in an archive with gradle Zip task
I have a directory A under my project's rootDir. Directory A has subidrectories B,C,D,E,etc.
I want to create archive of only B and ignore others. I have written a gradle task to zip the directory B.
task ZipOnlyB(type: Zip){
archiveName = "ArchiveOfB.zip"
destinationDir = file ("${rootDir}/toSendToArtifactory")
from "${rootDir}/A/B"
}
The above code works and creates an archive with name ArchiveOfB.zip. But this archive doesn't contain the directory B. The archive only contains the contents of directory B.
Expected content of zip file : A/B/contents-of-directory-B
Actual content of zip file : A/contents-of-directory-B
How do I go about getting the expected result. Any guidance in this regard is highly apprecited. i have looked up the "Working with fiels" section of Gradle documnetaion,but that doesn't help my cause. I was expecting some "include" property for including diretcories, but the include works only with files and no directory example was given.
gradle build.gradle
add a comment |
I have a directory A under my project's rootDir. Directory A has subidrectories B,C,D,E,etc.
I want to create archive of only B and ignore others. I have written a gradle task to zip the directory B.
task ZipOnlyB(type: Zip){
archiveName = "ArchiveOfB.zip"
destinationDir = file ("${rootDir}/toSendToArtifactory")
from "${rootDir}/A/B"
}
The above code works and creates an archive with name ArchiveOfB.zip. But this archive doesn't contain the directory B. The archive only contains the contents of directory B.
Expected content of zip file : A/B/contents-of-directory-B
Actual content of zip file : A/contents-of-directory-B
How do I go about getting the expected result. Any guidance in this regard is highly apprecited. i have looked up the "Working with fiels" section of Gradle documnetaion,but that doesn't help my cause. I was expecting some "include" property for including diretcories, but the include works only with files and no directory example was given.
gradle build.gradle
you could simply configure the target directory within the archive, by addinginto ('B')
in your task definition. this will create a root level 'B' directory.
– M.Ricciuti
Nov 19 '18 at 14:04
@M.Ricciuti I have edited my question. corrected the formatting. used angular brackets to show "contents-of-directory-B". But that didn't work. So removed the brackets.
– Asif Kamran Malick
Nov 19 '18 at 14:06
I provided an answer with a working example, please try it
– M.Ricciuti
Nov 19 '18 at 14:12
add a comment |
I have a directory A under my project's rootDir. Directory A has subidrectories B,C,D,E,etc.
I want to create archive of only B and ignore others. I have written a gradle task to zip the directory B.
task ZipOnlyB(type: Zip){
archiveName = "ArchiveOfB.zip"
destinationDir = file ("${rootDir}/toSendToArtifactory")
from "${rootDir}/A/B"
}
The above code works and creates an archive with name ArchiveOfB.zip. But this archive doesn't contain the directory B. The archive only contains the contents of directory B.
Expected content of zip file : A/B/contents-of-directory-B
Actual content of zip file : A/contents-of-directory-B
How do I go about getting the expected result. Any guidance in this regard is highly apprecited. i have looked up the "Working with fiels" section of Gradle documnetaion,but that doesn't help my cause. I was expecting some "include" property for including diretcories, but the include works only with files and no directory example was given.
gradle build.gradle
I have a directory A under my project's rootDir. Directory A has subidrectories B,C,D,E,etc.
I want to create archive of only B and ignore others. I have written a gradle task to zip the directory B.
task ZipOnlyB(type: Zip){
archiveName = "ArchiveOfB.zip"
destinationDir = file ("${rootDir}/toSendToArtifactory")
from "${rootDir}/A/B"
}
The above code works and creates an archive with name ArchiveOfB.zip. But this archive doesn't contain the directory B. The archive only contains the contents of directory B.
Expected content of zip file : A/B/contents-of-directory-B
Actual content of zip file : A/contents-of-directory-B
How do I go about getting the expected result. Any guidance in this regard is highly apprecited. i have looked up the "Working with fiels" section of Gradle documnetaion,but that doesn't help my cause. I was expecting some "include" property for including diretcories, but the include works only with files and no directory example was given.
gradle build.gradle
gradle build.gradle
edited Nov 19 '18 at 14:04
asked Nov 19 '18 at 13:45


Asif Kamran Malick
1001210
1001210
you could simply configure the target directory within the archive, by addinginto ('B')
in your task definition. this will create a root level 'B' directory.
– M.Ricciuti
Nov 19 '18 at 14:04
@M.Ricciuti I have edited my question. corrected the formatting. used angular brackets to show "contents-of-directory-B". But that didn't work. So removed the brackets.
– Asif Kamran Malick
Nov 19 '18 at 14:06
I provided an answer with a working example, please try it
– M.Ricciuti
Nov 19 '18 at 14:12
add a comment |
you could simply configure the target directory within the archive, by addinginto ('B')
in your task definition. this will create a root level 'B' directory.
– M.Ricciuti
Nov 19 '18 at 14:04
@M.Ricciuti I have edited my question. corrected the formatting. used angular brackets to show "contents-of-directory-B". But that didn't work. So removed the brackets.
– Asif Kamran Malick
Nov 19 '18 at 14:06
I provided an answer with a working example, please try it
– M.Ricciuti
Nov 19 '18 at 14:12
you could simply configure the target directory within the archive, by adding
into ('B')
in your task definition. this will create a root level 'B' directory.– M.Ricciuti
Nov 19 '18 at 14:04
you could simply configure the target directory within the archive, by adding
into ('B')
in your task definition. this will create a root level 'B' directory.– M.Ricciuti
Nov 19 '18 at 14:04
@M.Ricciuti I have edited my question. corrected the formatting. used angular brackets to show "contents-of-directory-B". But that didn't work. So removed the brackets.
– Asif Kamran Malick
Nov 19 '18 at 14:06
@M.Ricciuti I have edited my question. corrected the formatting. used angular brackets to show "contents-of-directory-B". But that didn't work. So removed the brackets.
– Asif Kamran Malick
Nov 19 '18 at 14:06
I provided an answer with a working example, please try it
– M.Ricciuti
Nov 19 '18 at 14:12
I provided an answer with a working example, please try it
– M.Ricciuti
Nov 19 '18 at 14:12
add a comment |
1 Answer
1
active
oldest
votes
You can use into
method (see https://docs.gradle.org/current/dsl/org.gradle.api.tasks.bundling.Zip.html#org.gradle.api.tasks.bundling.Zip:into(java.lang.Object) ) to specify the destination directory inside the archive
In you case you could do something like:
task ZipOnlyB(type: Zip){
archiveName = "ArchiveOfB.zip"
destinationDir = file ("${rootDir}/toSendToArtifactory")
from fileTree('A/B')
into ('A/B')
}
This will create the archive with first level directory "A" containing the "B" directory and its content. If you don't want this root directory "A" but just directory "B", then use into ('B')
Exactly what I was looking for. This resolved my issue. Thanks a ton @M.Ricciuti You taught me few invaluable things. Thanks for helping me become better at Gradle.
– Asif Kamran Malick
Nov 19 '18 at 14:35
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53375977%2finclude-single-directory-in-an-archive-with-gradle-zip-task%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
You can use into
method (see https://docs.gradle.org/current/dsl/org.gradle.api.tasks.bundling.Zip.html#org.gradle.api.tasks.bundling.Zip:into(java.lang.Object) ) to specify the destination directory inside the archive
In you case you could do something like:
task ZipOnlyB(type: Zip){
archiveName = "ArchiveOfB.zip"
destinationDir = file ("${rootDir}/toSendToArtifactory")
from fileTree('A/B')
into ('A/B')
}
This will create the archive with first level directory "A" containing the "B" directory and its content. If you don't want this root directory "A" but just directory "B", then use into ('B')
Exactly what I was looking for. This resolved my issue. Thanks a ton @M.Ricciuti You taught me few invaluable things. Thanks for helping me become better at Gradle.
– Asif Kamran Malick
Nov 19 '18 at 14:35
add a comment |
You can use into
method (see https://docs.gradle.org/current/dsl/org.gradle.api.tasks.bundling.Zip.html#org.gradle.api.tasks.bundling.Zip:into(java.lang.Object) ) to specify the destination directory inside the archive
In you case you could do something like:
task ZipOnlyB(type: Zip){
archiveName = "ArchiveOfB.zip"
destinationDir = file ("${rootDir}/toSendToArtifactory")
from fileTree('A/B')
into ('A/B')
}
This will create the archive with first level directory "A" containing the "B" directory and its content. If you don't want this root directory "A" but just directory "B", then use into ('B')
Exactly what I was looking for. This resolved my issue. Thanks a ton @M.Ricciuti You taught me few invaluable things. Thanks for helping me become better at Gradle.
– Asif Kamran Malick
Nov 19 '18 at 14:35
add a comment |
You can use into
method (see https://docs.gradle.org/current/dsl/org.gradle.api.tasks.bundling.Zip.html#org.gradle.api.tasks.bundling.Zip:into(java.lang.Object) ) to specify the destination directory inside the archive
In you case you could do something like:
task ZipOnlyB(type: Zip){
archiveName = "ArchiveOfB.zip"
destinationDir = file ("${rootDir}/toSendToArtifactory")
from fileTree('A/B')
into ('A/B')
}
This will create the archive with first level directory "A" containing the "B" directory and its content. If you don't want this root directory "A" but just directory "B", then use into ('B')
You can use into
method (see https://docs.gradle.org/current/dsl/org.gradle.api.tasks.bundling.Zip.html#org.gradle.api.tasks.bundling.Zip:into(java.lang.Object) ) to specify the destination directory inside the archive
In you case you could do something like:
task ZipOnlyB(type: Zip){
archiveName = "ArchiveOfB.zip"
destinationDir = file ("${rootDir}/toSendToArtifactory")
from fileTree('A/B')
into ('A/B')
}
This will create the archive with first level directory "A" containing the "B" directory and its content. If you don't want this root directory "A" but just directory "B", then use into ('B')
edited Nov 19 '18 at 14:16
answered Nov 19 '18 at 14:09


M.Ricciuti
2,7862418
2,7862418
Exactly what I was looking for. This resolved my issue. Thanks a ton @M.Ricciuti You taught me few invaluable things. Thanks for helping me become better at Gradle.
– Asif Kamran Malick
Nov 19 '18 at 14:35
add a comment |
Exactly what I was looking for. This resolved my issue. Thanks a ton @M.Ricciuti You taught me few invaluable things. Thanks for helping me become better at Gradle.
– Asif Kamran Malick
Nov 19 '18 at 14:35
Exactly what I was looking for. This resolved my issue. Thanks a ton @M.Ricciuti You taught me few invaluable things. Thanks for helping me become better at Gradle.
– Asif Kamran Malick
Nov 19 '18 at 14:35
Exactly what I was looking for. This resolved my issue. Thanks a ton @M.Ricciuti You taught me few invaluable things. Thanks for helping me become better at Gradle.
– Asif Kamran Malick
Nov 19 '18 at 14:35
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53375977%2finclude-single-directory-in-an-archive-with-gradle-zip-task%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
you could simply configure the target directory within the archive, by adding
into ('B')
in your task definition. this will create a root level 'B' directory.– M.Ricciuti
Nov 19 '18 at 14:04
@M.Ricciuti I have edited my question. corrected the formatting. used angular brackets to show "contents-of-directory-B". But that didn't work. So removed the brackets.
– Asif Kamran Malick
Nov 19 '18 at 14:06
I provided an answer with a working example, please try it
– M.Ricciuti
Nov 19 '18 at 14:12