рдЧреНрд░реЗрдб: рдХрд╛рд░реНрдп рдХреЛрдб рд╣реИрдВ

рдкрд┐рдЫрд▓реЗ рд╡рд┐рд╖рдп рдореЗрдВ, рдореИрдВрдиреЗ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдмрддрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдХрд┐ рдЧреНрд░реИрдбрд▓ рдХреНрдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рдХрд┐рди рд╡рд┐рдЪрд╛рд░реЛрдВ рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╕реЛрд░реНрд╕ рд╕реЗрдЯреНрд╕ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдФрд░ рдЗрд╕рд╕реЗ рдЬреБрдбрд╝реА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкрд░ рднреА рдкреНрд░рдХрд╛рд╢ рдбрд╛рд▓рд╛ рдЧрдпрд╛ред



рдЕрдм рдореИрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рдЧреНрд░реИрдбрд▓ рдиреЗ рдореБрдЭреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдХреИрд╕реЗ рдЭреБрдХрд╛ рджрд┐рдпрд╛ред рд╣рдо рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред рдЧреНрд░реИрдбрд▓ рдореЗрдВ рдХрд╛рд░реНрдп рдЪреАрдВрдЯреА рд▓рдХреНрд╖реНрдп рдХрд╛ рдПрдХ рдирд┐рдХрдЯ рдПрдирд╛рд▓реЙрдЧ рд╣реИред рдФрд░, рд╢рдмреНрджреЛрдВ рдореЗрдВ рднреНрд░рдорд┐рдд рди рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрд╕рдХреЗ рдмрд╛рдж рдХрд╛рд░реНрдп (рдпрд╛ рдХрд╛рд░реНрдп) рд╣рдореЗрд╢рд╛ рдЧреНрд░реЗрдб рдЯрд╛рд╕реНрдХ рдХрд╛ рдЕрд░реНрде рд╣реЛрдЧрд╛ред рдЕрдЧрд░ рд╣рдо рдЪреАрдВрдЯреА рд╕реЗ рдПрдХ рдЗрдХрд╛рдИ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛: рдЪреАрдВрдЯреА рдХрд╛рд░реНрдпред



рдЗрд╕рд▓рд┐рдП рдЧреНрд░реВрд╡реА рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╡рд┐рд╢реЗрд╖ dsl (рдбреЛрдореЗрди рд╡рд┐рд╢рд┐рд╖реНрдЯ рднрд╛рд╖рд╛) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЧреНрд░реИрдбрд▓ рдореЗрдВ рдХрд╛рд░реНрдп рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВред рдФрд░ рдпрд╣ рд╕рдВрднрд╛рд╡рдирд╛ рдЬреЛ рдЗрд╕ dsl рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдЪреАрдВрдЯреА рдпрд╛ рдорд╛рд╡реЗрди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд▓рдЧрднрдЧ рдЕрдВрддрд╣реАрди рд╣реИред







рдЖрдЗрдП рдкреНрд░реЛрдЧреНрд░рд╛рдорд░реНрд╕ рдХреЗ рд▓рд┐рдП рдкрд╛рд░рдВрдкрд░рд┐рдХ "рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб" рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВред рдорд╛рди рд▓реАрдЬрд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдЦрд╛рд▓реА build.gradle



рдлрд╝рд╛рдЗрд▓ рд╣реИред рд╣рдо рд▓рд┐рдЦрддреЗ рд╣реИрдВ:



 task hello << { println 'Hello world!' }
      
      





рд╣рдо рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ



>gradle -q hello

Hello world!







рдмрд┐рдВрдЧреЛ! рд▓реЗрдХрд┐рди рдкреНрд░рднрд╛рд╡рд╢рд╛рд▓реА рдирд╣реАрдВ рд╣реИред рдЪрд▓реЛ рдХреБрдЫ рдФрд░ рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ:

 task upper << { String someString = 'mY_nAmE' println "Original: " + someString println "Upper case: " + someString.toUpperCase() 4.times { print "$it " } }
      
      





рд╣рдо рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ



>gradle -q upper

Original: mY_nAmE

Upper case: MY_NAME

0 1 2 3







рдпрд╣реА рд╣реИ, рдХрд╛рд░реНрдп рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рдЕрдВрджрд░ рдордирдорд╛рдирд╛ Groovy рдХреЛрдб рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рдХрд╛рд░реНрдп рд╕реНрд╡рдпрдВ рдкреВрд░реНрдг рдЧреНрд░реВрд╡реА рд╡рд╕реНрддреБ рд╣реИрдВред рдФрд░ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдЙрдирдХреЗ рдкрд╛рд╕ рдЧреБрдг рдФрд░ рд╡рд┐рдзрд┐рдпрд╛рдВ рд╣реИрдВ рдЬреЛ рдЙрдиреНрд╣реЗрдВ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдирдИ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ред



рдЖрдЗрдП рдПрдХ рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВред



рдорд╛рди рд▓реАрдЬрд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдЫреЛрдЯрд╛ рдЬрд╛рд╡рд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реИред рдпрд╣рд╛рдБ рдЗрд╕рдХрд╛ build.gradle рд╣реИ:



 apply plugin: 'java' version = '1.0' repositories { mavenCentral() } dependencies { compile group: 'commons-collections', name: 'commons-collections', version: '3.2' testCompile group: 'junit', name: 'junit', version: '4.7' }
      
      





рдФрд░ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕рдВрд░рдЪрдирд╛



 / рдкреНрд░реЛрдЬреЗрдХреНрдЯрдЕрд▓реНрдлрд╛
     / src
         / рдкрд░реАрдХреНрд╖рдг
         / рдореБрдЦреНрдп
             / рдЬрд╛рд╡рд╛
                 / рдореЗрд░рд╛
                     / рдЦреБрдж рдХрд╛
                         / рдХреЛрдб
                     / рд╡рд╕рдВрдд
                         / рдбреАрдмреА
                         / рдкреНрд▓рдЧрдЗрди
                         / рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░




рдХреБрдЫ рднреА рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИ: рд╕рдВрд╕реНрдХрд░рдг, рдорд╛рд╡реЗрди рд╕реЗрдВрдЯреНрд░рд▓ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА, рд╕рдВрдХрд▓рди рдХреЗ рд▓рд┐рдП рджреЛ рдирд┐рд░реНрднрд░рддрд╛, рдХрдИ рдкреИрдХреЗрдЬред рдХрдорд╛рдВрдб рдЪрд▓рд╛рддреЗ рд╕рдордп



>gradle build







projectAlpha-1.0.jar



рд╕рдВрдЧреНрд░рд╣ рдХреЛ projectAlpha-1.0.jar



projectAlpha/build/libs



projectAlpha-1.0.jar



рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╕рднреА рд╕рдордЭреМрддреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдкреВрд░реНрдгред рдорд╛рд╡реЗрди рдареАрдХ рдпрд╣реА рдХрд╛рдо рдХрд░реЗрдЧрд╛ред



рд▓реЗрдХрд┐рди рд╕рдордп рдХреЗ рд╕рд╛рде, рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдмрджрд▓реЗрдВред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЕрднрд┐рд▓реЗрдЦрд╛рдЧрд╛рд░ рдореЗрдВ рд╕реНрдкреНрд░рд┐рдВрдЧ-рд╕рдВрдмрдВрдзрд┐рдд рдХреЛрдб рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдпреВрдирд┐рдЯ рдЯреЗрд╕реНрдЯ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЕрд▓рдЧ рдЬрд╛рд░ рдФрд░ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рд╕рд╛рде рдПрдХ рдФрд░ рдЬрд╛рд░ рдЗрдХрдЯреНрдард╛ рдХрд░реЗрдВред рдЧреНрд░реЗрдбрд▓ рдореЗрдВ, рдЗрд╕реЗ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:



 task sourcesJar(type: Jar) { appendix = 'sources' from sourceSets.main.allJava } task testJar(type: Jar) { appendix = 'test' from sourceSets.test.classes } jar { exclude 'my/spring/**' } task springDbJar(type: Jar) { appendix = 'spring-db' from sourceSets.main.classes include 'my/spring/db/**' } task springAuthJar(type: Jar) { appendix = 'spring-auth' from sourceSets.main.classes include 'my/spring/auth/**' } task springPluginJar(type: Jar) { appendix = 'spring-plugin' from sourceSets.main.classes include 'my/spring/plugin/**' }
      
      





рд╣рдо рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ

>gradle assemble







рдФрд░ рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ:

projectAlpha>dir /b build\libs

projectAlpha-1.0.jar

projectAlpha-sources-1.0.jar

projectAlpha-spring-auth-1.0.jar

projectAlpha-spring-db-1.0.jar

projectAlpha-spring-plugin-1.0.jar

projectAlpha-test-1.0.jar








рдХреНрдпрд╛ рд╣реБрдЖ:



рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдЗрд╕реЗ рдорд╛рд╡реЗрди рдореЗрдВ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ?



рд▓реЗрдХрд┐рди рдЬреАрд╡рди рдЕрднреА рднреА рдЦрдбрд╝рд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рд╣рдорд╛рд░реА рдорд╛рдВрдЧреЗрдВ рдмрджрд▓рддреА рд░рд╣рддреА рд╣реИрдВред рдПрдХ рдмрдврд╝рд┐рдпрд╛ рд╕реБрдмрд╣, рд╕реНрдкреНрд░рд┐рдВрдЧ рдлрд╛рдЙрдВрдбреЗрд╢рди рдиреЗ рд╣рд░ рдЬрд╛рд░ рдХреЛ рдкреНрд░рдХрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛрдбрд╝рдиреЗ рдХреА рдорд╛рдВрдЧ рдХреА, рдЬреЛ рд╡рд╕рдВрдд рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ рдФрд░ рд╣реИрдмрд░ рдкрд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдорд╛рди habr.ru рдХреЗ рд╕рд╛рде рдбреЗрдореЛ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИред рдпрд╣ рдЕрдЬреАрдм рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдЕрднреА рднреА рдЙрдиреНрд╣реЗрдВ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЬреЛрдбрд╝реЗрдВ:



 tasks.withType(Jar).matching { task -> task.archiveName.contains('spring') }.allObjects { task -> task.manifest { attributes demo: 'habr.ru' } }
      
      





рдЪрд▓рд╛рдПрдБ:



projectAlpha>gradle assemble

:compileJava UP-TO-DATE

:processResources UP-TO-DATE

:classes UP-TO-DATE

:jar UP-TO-DATE

:sourcesJar UP-TO-DATE

:springAuthJar

:springDbJar

:springPluginJar

:compileTestJava UP-TO-DATE

:processTestResources UP-TO-DATE

:testClasses UP-TO-DATE

:testJar UP-TO-DATE

:assemble









рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдХрдИ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ UP-TO-DATE рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдЧреНрд░реИрдбрд▓ рдХрд╛ рдПрдХ рдФрд░ рдореБрдЦреНрдп рдЖрдХрд░реНрд╖рдг рд╣реИ - рд╡реГрджреНрдзрд┐рд╢реАрд▓ рд╡рд┐рдзрд╛рдирд╕рднрд╛ред рд▓реЗрдХрд┐рди рдЙрд╕рдХреЗ рдПрдХ рдФрд░ рд╕рдордп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред рдЕрдм, рдпрджрд┐ рдЖрдк рдмрд╣реБрдд рдЖрд▓рд╕реА рдирд╣реАрдВ рд╣реИрдВ рдФрд░ рдЖрд░реНрдХрд╛рдЗрд╡ рдореИрдирд┐рдлреЗрд╕реНрдЯреЛрдВ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╕рдВрдмрдВрдзрд┐рдд рд╕реНрдкреНрд░рд┐рдВрдЧ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд▓рд╛рдЗрди рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ



Manifest-Version: 1.0

demo: habr.ru







рдмрд┐рдВрдЧреЛ!



рд▓реЗрдХрд┐рди рд╕реНрдкреНрд░рд┐рдВрдЧ рдлрд╛рдЙрдВрдбреЗрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдЬрд╛рд░реА рд╣реИред рдФрд░ рдЕрдм рдЖрдкрдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдЬрд╛рд░ рдХреЗ рдмрдЧрд▓ рдореЗрдВ рдЗрд╕рдХреА рдЪреЗрдХрд╕рдо рдбрд╛рд▓рдиреА рд╣реЛрдЧреА :) рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреА рд╕рдлрд╛рдИ рдПрдХ рдЧрдВрднреАрд░ рдорд╛рдорд▓рд╛ рд╣реИ, рдФрд░ рд╣рдореЗрдВ рдЬрдорд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЧреНрд░реИрдбрд▓ рдХреЗ рдкрд╛рд╕ рдПрдордбреА 5 рдЧрдгрдирд╛ рдСрдкрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдореВрд▓ рд╕рдорд░реНрдерди рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдЪреАрдВрдЯреА рдореЗрдВ рд╣реИред рдареАрдХ рд╣реИ, рдЪрд▓реЛ рдЗрд╕реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рддреЗ рд╣реИрдВред рдЕрдВрддрд┐рдо рдЯреБрдХрдбрд╝реЗ рдХреЛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдмрджрд▓реЗрдВ:



 def allSpringJars = tasks.withType(Jar).matching { task -> task.archiveName.contains('spring') } allSpringJars.allObjects { task -> configure(task) { manifest { attributes demo: 'habr.ru' } doLast { ant.checksum(file: archivePath, todir: archivePath.parentFile) } } } task springJars(dependsOn: allSpringJars)
      
      







рдФрд░ рдЗрд╕ рдмрд╛рд░ рд╣рдо рдХреЗрд╡рд▓ рдмреАрдорд╛рд░ рд╡рд╕рдВрдд рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдЕрднрд┐рд▓реЗрдЦрд╛рдЧрд╛рд░ рдПрдХрддреНрд░ рдХрд░реЗрдВрдЧреЗ:



projectAlpha>gradle clean springJars

:clean

:compileJava

:processResources UP-TO-DATE

:classes

:springAuthJar

:springDbJar

:springPluginJar

:springJars



BUILD SUCCESSFUL



Total time: 5.015 secs








рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХреНрдпрд╛ рд╣реБрдЖред

c:\Work\Gradle\tasksAreCode\projectAlpha>dir /b build\libs

projectAlpha-spring-auth-1.0.jar

projectAlpha-spring-auth-1.0.jar.MD5

projectAlpha-spring-db-1.0.jar

projectAlpha-spring-db-1.0.jar.MD5

projectAlpha-spring-plugin-1.0.jar

projectAlpha-spring-plugin-1.0.jar.MD5








рдХрд╛рд░реНрдп рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдиреНрдпреВрдирддрдо рдкреНрд░рдпрд╛рд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рд╢рд╛рдпрдж рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ рдХреГрддреНрд░рд┐рдо рдФрд░ рдереЛрдбрд╝реА рднреЛрд▓реА рд▓рдЧрддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЬрд┐рди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рд╣реЛрддрд╛ рд╣реИ, рд╡реЗ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд░реВрдк рд╕реЗ рд╡рд┐рд╡рд┐рдз рд╣реЛрддреЗ рд╣реИрдВред



рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдЧреНрд░реВрд╡реА рдХреЛрдб рдХреА рдПрдХ рдЫреЛрдЯреА рдорд╛рддреНрд░рд╛ рдХреА рдорджрдж рд╕реЗ, рд╣рдо рдмрджрд▓рддреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рдЕрдиреБрдХреВрд▓ рд╣реЛрдиреЗ рдФрд░ рдХрдИ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣реЗ рдЬрд┐рдиреНрд╣реЗрдВ рдЪреАрдВрдЯреА рдпрд╛ рдорд╛рд╡реЗрди рдХреЗ рд╕рд╛рде рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрдЧрд╛ред Xml рдХреЗ рдмрдЬрд╛рдп рдПрдХ рд▓рдЪреАрд▓реА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрдкрдХреЗ рд╣рд╛рдереЛрдВ рдХреЛ рдореБрдХреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдпрд╣ рддрдп рдХрд░рдиреЗ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЕрдкрдирд╛ рдХрд╛рд░реНрдп рдХреИрд╕реЗ рдкреВрд░рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред



рдЬрд╛рд░реА рд░рдЦрд╛ рдЬрд╛рдПред



All Articles