include single directory in an archive with gradle Zip task












0














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.










share|improve this question
























  • 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
















0














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.










share|improve this question
























  • 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














0












0








0







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.










share|improve this question















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






share|improve this question















share|improve this question













share|improve this question




share|improve this question








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 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


















  • 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
















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












1 Answer
1






active

oldest

votes


















1














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')






share|improve this answer























  • 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











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
});


}
});














draft saved

draft discarded


















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









1














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')






share|improve this answer























  • 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
















1














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')






share|improve this answer























  • 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














1












1








1






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')






share|improve this answer














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')







share|improve this answer














share|improve this answer



share|improve this answer








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


















  • 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


















draft saved

draft discarded




















































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.




draft saved


draft discarded














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





















































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







Popular posts from this blog

MongoDB - Not Authorized To Execute Command

in spring boot 2.1 many test slices are not allowed anymore due to multiple @BootstrapWith

How to fix TextFormField cause rebuild widget in Flutter