āĻ¸ā§‹āĻ¨āĻžāĻŸāĻžāĻ‡āĻĒ āĻŽāĻžāĻ­ā§‡āĻ¨ āĻ¸ā§‡āĻ¨ā§āĻŸā§āĻ°āĻžāĻ˛ āĻ°āĻŋāĻĒā§‹āĻœāĻŋāĻŸāĻ°āĻŋāĻ¤ā§‡ āĻœāĻžāĻ­āĻž āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒ āĻĒā§āĻ°āĻ•āĻžāĻļ āĻ•āĻ°āĻ¤ā§‡ āĻ—ā§āĻ°ā§‡āĻĄāĻ˛ āĻāĻŦāĻ‚ āĻ—āĻŋāĻĨā§āĻŦ āĻ…ā§āĻ¯āĻžāĻ•āĻļāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž

āĻāĻ‡ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§‡, āĻ†āĻŽāĻŋ āĻ—ā§āĻ°ā§‡āĻĄāĻ˛ āĻŦāĻŋāĻ˛ā§āĻĄāĻžāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ¸ā§‹āĻ¨āĻžāĻŸāĻžāĻ‡āĻĒ āĻŽāĻžāĻ­ā§‡āĻ¨ āĻ¸ā§‡āĻ¨ā§āĻŸā§āĻ°āĻžāĻ˛ āĻ°āĻŋāĻĒā§‹āĻœāĻŋāĻŸāĻ°āĻŋāĻ¤ā§‡ āĻ—āĻŋāĻĨā§āĻŦ āĻ…ā§āĻ¯āĻžāĻ•āĻļāĻ¨ā§‡āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻ¸ā§āĻ•ā§āĻ°ā§āĻ¯āĻžāĻš āĻĨā§‡āĻ•ā§‡ āĻœāĻžāĻ­āĻž āĻ†āĻ°ā§āĻŸāĻŋāĻĢā§āĻ¯āĻžāĻ•ā§āĻŸ āĻĒā§āĻ°āĻ•āĻžāĻļ āĻ•āĻ°āĻžāĻ° āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻŸāĻŋ āĻ˜āĻ¨āĻŋāĻˇā§āĻ āĻ­āĻžāĻŦā§‡ āĻĻā§‡āĻ–āĻ¤ā§‡ āĻšāĻžāĻ‡āĨ¤

āĻāĻ• āĻœāĻžāĻ¯āĻŧāĻ—āĻžāĻ¯āĻŧ āĻ¸ā§āĻŦāĻžāĻ­āĻžāĻŦāĻŋāĻ• āĻŸāĻŋāĻ‰āĻŸā§‹āĻ°āĻŋāĻ¯āĻŧāĻžāĻ˛ āĻ¨āĻž āĻĨāĻžāĻ•āĻžāĻ° āĻ•āĻžāĻ°āĻŖā§‡ āĻ†āĻŽāĻŋ āĻāĻ‡ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻŸāĻŋ āĻ˛ā§‡āĻ–āĻžāĻ° āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ¯āĻŧā§‡āĻ›āĻŋāĨ¤ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ¤āĻĨā§āĻ¯ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻ‰āĻ¤ā§āĻ¸ āĻĨā§‡āĻ•ā§‡ āĻŸā§āĻ•āĻ°ā§‹ āĻŸā§āĻ•āĻ°ā§‹ āĻ¸āĻ‚āĻ—ā§āĻ°āĻš āĻ•āĻ°āĻ¤ā§‡ āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛, āĻ‰āĻĒāĻ°āĻ¨ā§āĻ¤ā§, āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻ¤āĻžāĻœāĻž āĻ¨āĻ¯āĻŧāĨ¤ āĻ•ā§‡ āĻ¯āĻ¤ā§āĻ¨ āĻ•āĻ°ā§‡, āĻŦāĻŋāĻĄāĻŧāĻžāĻ˛ā§‡āĻ° āĻ¨ā§€āĻšā§‡ āĻ¸ā§āĻŦāĻžāĻ—āĻ¤āĻŽāĨ¤

āĻ¸ā§‹āĻ¨āĻžāĻŸāĻžāĻ‡āĻĒā§‡ āĻāĻ•āĻŸāĻŋ āĻ¸āĻ‚āĻ—ā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡

āĻĒā§āĻ°āĻĨāĻŽ āĻ§āĻžāĻĒ āĻšāĻ˛ āĻ¸ā§‹āĻ¨āĻžāĻŸāĻžāĻ‡āĻĒ āĻŽāĻžāĻ­ā§‡āĻ¨ āĻ¸ā§‡āĻ¨ā§āĻŸā§āĻ°āĻžāĻ˛ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¸āĻ‚āĻ—ā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻžāĨ¤ āĻāĻ‡ āĻœāĻ¨ā§āĻ¯ āĻ†āĻŽāĻ°āĻž āĻ¯āĻžāĻ‡ āĻāĻ–āĻžāĻ¨ā§‡, āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻ¨ āĻ•āĻ°ā§āĻ¨ āĻāĻŦāĻ‚ āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻŸāĻžāĻ¸ā§āĻ• āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§āĻ¨, āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ¸āĻ‚āĻ—ā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻŦāĻ˛ā§āĻ¨āĨ¤ āĻ†āĻŽāĻ°āĻž āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻĄā§āĻ°āĻžāĻ‡āĻ­ āĻ—ā§āĻ°ā§āĻĒāĻ†āĻ‡āĻĄāĻŋ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒ, āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒ URL āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒ āĻ˛āĻŋāĻ™ā§āĻ• āĻāĻŦāĻ‚ SCM url āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖ āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŖ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ˛āĻŋāĻ™ā§āĻ• āĻ¯ā§‡āĻ–āĻžāĻ¨ā§‡ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒāĻŸāĻŋ āĻ…āĻŦāĻ¸ā§āĻĨāĻŋāĻ¤āĨ¤ āĻ—ā§āĻ°ā§āĻĒāĻ†āĻ‡āĻĄāĻŋ āĻāĻ–āĻžāĻ¨ā§‡ com.example, com.example.domain, com.example.testsupport āĻĢāĻ°ā§āĻŽā§‡āĻ° āĻšāĻ“āĻ¯āĻŧāĻž āĻ‰āĻšāĻŋāĻ¤ āĻāĻŦāĻ‚ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ—āĻŋāĻĨā§āĻŦā§‡āĻ° āĻ˛āĻŋāĻ™ā§āĻ•ā§‡āĻ° āĻ†āĻ•āĻžāĻ°ā§‡āĻ“ āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡: github.com/yourusername -> io.github.yourusername. āĻ¯ā§‡ āĻ•ā§‹āĻ¨ā§‹ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡, āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻāĻ‡ āĻĄā§‹āĻŽā§‡āĻ¨ āĻŦāĻž āĻĒā§āĻ°ā§‹āĻĢāĻžāĻ‡āĻ˛ā§‡āĻ° āĻŽāĻžāĻ˛āĻŋāĻ•āĻžāĻ¨āĻž āĻ¯āĻžāĻšāĻžāĻ‡ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤ āĻ†āĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻāĻ•āĻŸāĻŋ āĻ—āĻŋāĻĨā§āĻŦ āĻĒā§āĻ°ā§‹āĻĢāĻžāĻ‡āĻ˛ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ•āĻ°ā§‡āĻ¨, āĻ¤āĻžāĻšāĻ˛ā§‡ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻĒāĻ›āĻ¨ā§āĻĻāĻ¸āĻ‡ āĻ¨āĻžāĻŽā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ¸āĻ°ā§āĻŦāĻœāĻ¨ā§€āĻ¨ āĻ¸āĻ‚āĻ—ā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻŦāĻ˛āĻž āĻšāĻŦā§‡āĨ¤

āĻ¨āĻŋāĻļā§āĻšāĻŋāĻ¤āĻ•āĻ°āĻŖā§‡āĻ° āĻ•āĻŋāĻ›ā§ āĻ¸āĻŽāĻ¯āĻŧ āĻĒāĻ°ā§‡, āĻ†āĻĒāĻ¨āĻžāĻ° GroupId āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻšāĻŦā§‡ āĻāĻŦāĻ‚ āĻ†āĻŽāĻ°āĻž āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§€ āĻ§āĻžāĻĒā§‡, Gradle āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ°ā§‡āĻļāĻ¨ā§‡ āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋāĨ¤

Gradle āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ° āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡

āĻ˛ā§‡āĻ–āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻ†āĻŽāĻŋ āĻ—ā§āĻ°ā§‡āĻĄāĻ˛ āĻĒā§āĻ˛āĻžāĻ—āĻ‡āĻ¨āĻ—ā§āĻ˛āĻŋ āĻ–ā§āĻāĻœā§‡ āĻĒāĻžāĻ‡āĻ¨āĻŋ āĻ¯āĻž āĻ†āĻ°ā§āĻŸāĻŋāĻĢā§āĻ¯āĻžāĻ•ā§āĻŸ āĻĒā§āĻ°āĻ•āĻžāĻļ āĻ•āĻ°āĻ¤ā§‡ āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤ āĻāĻ‡ āĻāĻ•āĻŽāĻžāĻ¤ā§āĻ° āĻĒā§āĻ˛āĻžāĻ—āĻ‡āĻ¨ āĻ¯āĻž āĻ†āĻŽāĻŋ āĻĒā§‡āĻ¯āĻŧā§‡āĻ›āĻŋ, āĻ¤āĻŦā§‡ āĻ˛ā§‡āĻ–āĻ• āĻāĻŸāĻŋāĻ•ā§‡ āĻ†āĻ°āĻ“ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻ…āĻ¸ā§āĻŦā§€āĻ•āĻžāĻ° āĻ•āĻ°ā§‡āĻ›ā§‡āĻ¨āĨ¤ āĻ…āĻ¤āĻāĻŦ, āĻ†āĻŽāĻŋ āĻ¨āĻŋāĻœā§‡āĻ‡ āĻ¸āĻŦāĻ•āĻŋāĻ›ā§ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ¯āĻŧā§‡āĻ›āĻŋ, āĻ¯ā§‡āĻšā§‡āĻ¤ā§ āĻāĻŸāĻŋ āĻ•āĻ°āĻž āĻ–ā§āĻŦ āĻ•āĻ āĻŋāĻ¨ āĻ¨āĻ¯āĻŧāĨ¤

āĻĒā§āĻ°āĻ•āĻžāĻļā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ¸ā§‹āĻ¨āĻžāĻŸāĻžāĻ‡āĻĒā§‡āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§€āĻ¯āĻŧāĻ¤āĻžāĻ—ā§āĻ˛āĻŋ āĻŦā§‡āĻ° āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻĨāĻŽ āĻœāĻŋāĻ¨āĻŋāĻ¸āĻŸāĻŋāĨ¤ āĻ¤āĻžāĻ°āĻž āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻ–āĻŋāĻ¤:

  • āĻ¸ā§‹āĻ°ā§āĻ¸ āĻ•ā§‹āĻĄ āĻāĻŦāĻ‚ JavaDoc āĻāĻ° āĻĒā§āĻ°āĻžāĻĒā§āĻ¯āĻ¤āĻž, āĻ¯ā§‡āĻŽāĻ¨āĨ¤ āĻ…āĻŦāĻļā§āĻ¯āĻ‡ āĻ†āĻ¸āĻŦā§‡ -sources.jar и-javadoc.jar āĻ¨āĻĨāĻŋ āĻĒāĻ¤ā§āĻ°. āĻĄāĻ•ā§āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāĻ¨ā§‡ āĻŦāĻ˛āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡, āĻ¯āĻĻāĻŋ āĻ¸ā§‹āĻ°ā§āĻ¸ āĻ•ā§‹āĻĄ āĻŦāĻž āĻĄāĻ•ā§āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāĻ¨ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻ•āĻ°āĻž āĻ¸āĻŽā§āĻ­āĻŦ āĻ¨āĻž āĻšāĻ¯āĻŧ, āĻ†āĻĒāĻ¨āĻŋ āĻāĻ•āĻŸāĻŋ āĻĄāĻžāĻŽāĻŋ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ -sources.jar āĻŦāĻž -javadoc.jar āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻĒāĻžāĻ¸ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ­āĻŋāĻ¤āĻ°ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ README āĻ¸āĻšāĨ¤
  • āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĢāĻžāĻ‡āĻ˛ āĻ¸āĻžāĻ‡āĻ¨ āĻ‡āĻ¨ āĻ•āĻ°āĻž āĻ†āĻŦāĻļā§āĻ¯āĻ• GPG/PGPāĻāĻŦāĻ‚ .asc āĻ¸ā§āĻŦāĻžāĻ•ā§āĻˇāĻ° āĻ§āĻžāĻ°āĻŖāĻ•āĻžāĻ°ā§€ āĻĢāĻžāĻ‡āĻ˛ āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻĢāĻžāĻ‡āĻ˛ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ…āĻ¨ā§āĻ¤āĻ°ā§āĻ­ā§āĻ•ā§āĻ¤ āĻ•āĻ°āĻž āĻ†āĻŦāĻļā§āĻ¯āĻ•.
  • āĻ‰āĻĒāĻ¸ā§āĻĨāĻŋāĻ¤āĻŋ pom āĻĢāĻžāĻ‡āĻ˛
  • āĻ¸āĻ āĻŋāĻ• āĻŽāĻžāĻ¨ groupId, artifactId и version. āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻ°ā§āĻŦāĻŋāĻšāĻžāĻ°ā§‡ āĻ¸ā§āĻŸā§āĻ°āĻŋāĻ‚ āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ āĻāĻŦāĻ‚ āĻāĻ° āĻ¸āĻžāĻĨā§‡ āĻļā§‡āĻˇ āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ āĻ¨āĻž -SNAPSHOT
  • āĻ‰āĻĒāĻ¸ā§āĻĨāĻŋāĻ¤āĻŋ āĻ†āĻŦāĻļā§āĻ¯āĻ• name, description и url
  • āĻ˛āĻžāĻ‡āĻ¸ā§‡āĻ¨ā§āĻ¸, āĻŦāĻŋāĻ•āĻžāĻļāĻ•āĻžāĻ°ā§€ āĻāĻŦāĻ‚ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖ āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŖ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ¤āĻĨā§āĻ¯ā§‡āĻ° āĻ‰āĻĒāĻ¸ā§āĻĨāĻŋāĻ¤āĻŋ

āĻāĻ—ā§āĻ˛āĻŋ āĻšāĻ˛ āĻŽā§ŒāĻ˛āĻŋāĻ• āĻ¨āĻŋāĻ¯āĻŧāĻŽ āĻ¯āĻž āĻĒā§āĻ°āĻ•āĻžāĻļ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ…āĻŦāĻļā§āĻ¯āĻ‡ āĻŽā§‡āĻ¨ā§‡ āĻšāĻ˛āĻ¤ā§‡ āĻšāĻŦā§‡ā§ˇ āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻ¤āĻĨā§āĻ¯ āĻ‰āĻĒāĻ˛āĻŦā§āĻ§ āĻāĻ–āĻžāĻ¨ā§‡.

āĻ†āĻŽāĻ°āĻž āĻāĻ‡ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§€āĻ¯āĻŧāĻ¤āĻžāĻ—ā§āĻ˛āĻŋ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻ•āĻ°āĻŋ build.gradle āĻĢāĻžāĻ‡āĻ˛ āĻĒā§āĻ°āĻĨāĻŽā§‡ āĻĄā§‡āĻ­ā§‡āĻ˛āĻĒāĻžāĻ°, āĻ˛āĻžāĻ‡āĻ¸ā§‡āĻ¨ā§āĻ¸, āĻ­āĻžāĻ°ā§āĻ¸āĻ¨ āĻ•āĻ¨ā§āĻŸā§āĻ°ā§‹āĻ˛ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§€āĻ¯āĻŧ āĻ¤āĻĨā§āĻ¯ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻž āĻ¯āĻžāĻ• āĻāĻŦāĻ‚ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒā§‡āĻ° url, āĻ¨āĻžāĻŽ āĻāĻŦāĻ‚ āĻŦāĻŋāĻŦāĻ°āĻŖ āĻ¸ā§‡āĻŸ āĻ•āĻ°āĻŋāĨ¤ āĻāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻ¸āĻšāĻœ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻ˛āĻŋāĻ–ā§āĻ¨:

def customizePom(pom) {
    pom.withXml {
        def root = asNode()

        root.dependencies.removeAll { dep ->
            dep.scope == "test"
        }

        root.children().last() + {
            resolveStrategy = DELEGATE_FIRST

            description 'Some description of artifact'
            name 'Artifct name'
            url 'https://github.com/login/projectname'
            organization {
                name 'com.github.login'
                url 'https://github.com/login'
            }
            issueManagement {
                system 'GitHub'
                url 'https://github.com/login/projectname/issues'
            }
            licenses {
                license {
                    name 'The Apache License, Version 2.0'
                    url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
                }
            }
            scm {
                url 'https://github.com/login/projectname'
                connection 'scm:https://github.com/login/projectname.git'
                developerConnection 'scm:git://github.com/login/projectname.git'
            }
            developers {
                developer {
                    id 'dev'
                    name 'DevName'
                    email '[email protected]'
                }
            }
        }
    }
}

āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§€, āĻ†āĻĒāĻ¨āĻŋ āĻ‰āĻ¤ā§āĻĒāĻ¨ā§āĻ¨ āĻ¸āĻŽāĻžāĻŦā§‡āĻļ āĻ¸āĻŽāĻ¯āĻŧ āĻ¯ā§‡ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡ -sources.jar и-javadoc.jar āĻ¨āĻĨāĻŋ āĻĒāĻ¤ā§āĻ°. āĻāĻ‡ āĻŦāĻŋāĻ­āĻžāĻ—ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ java āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻ–āĻŋāĻ¤ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡:

java {
    withJavadocJar()
    withSourcesJar()
}

āĻšāĻ˛ā§āĻ¨ āĻļā§‡āĻˇ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§‡ āĻāĻ—āĻŋāĻ¯āĻŧā§‡ āĻ¯āĻžāĻ‡, āĻāĻ•āĻŸāĻŋ GPG/PGP āĻ¸ā§āĻŦāĻžāĻ•ā§āĻˇāĻ° āĻ¸ā§‡āĻŸ āĻ†āĻĒ āĻ•āĻ°ā§āĻ¨āĨ¤ āĻāĻŸāĻŋ āĻ•āĻ°āĻ¤ā§‡, āĻĒā§āĻ˛āĻžāĻ—āĻ‡āĻ¨āĻŸāĻŋ āĻ¸āĻ‚āĻ¯ā§āĻ•ā§āĻ¤ āĻ•āĻ°ā§āĻ¨ signing:

plugins {
    id 'signing'
}

āĻāĻŦāĻ‚ āĻāĻ•āĻŸāĻŋ āĻŦāĻŋāĻ­āĻžāĻ— āĻ¯ā§‹āĻ— āĻ•āĻ°ā§āĻ¨:

signing {
    sign publishing.publications
}

āĻ…āĻŦāĻļā§‡āĻˇā§‡, āĻāĻ° āĻāĻ•āĻŸāĻŋ āĻŦāĻŋāĻ­āĻžāĻ— āĻ¯ā§‹āĻ— āĻ•āĻ°āĻž āĻ¯āĻžāĻ• publishing:

publishing {
    publications {
        mavenJava(MavenPublication) {
            customizePom(pom)
            groupId group
            artifactId archivesBaseName
            version version

            from components.java
        }
    }
    repositories {
        maven {
            url "https://oss.sonatype.org/service/local/staging/deploy/maven2"
            credentials {
                username sonatypeUsername
                password sonatypePassword
            }
        }
    }
}

āĻāĻŸāĻž āĻšāĻ˛ sonatype āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ° āĻ¨āĻžāĻŽ и sonatypeāĻĒāĻžāĻ¸āĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻĄ āĻ˛āĻ—āĻ‡āĻ¨ āĻāĻŦāĻ‚ āĻĒāĻžāĻ¸āĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻĄ āĻ§āĻžāĻ°āĻŖāĻ•āĻžāĻ°ā§€ āĻ­ā§‡āĻ°āĻŋāĻ¯āĻŧā§‡āĻŦāĻ˛ āĻ…āĻ¨ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻ¨ā§‡āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ¤ā§ˆāĻ°āĻŋ sonatype.org.

āĻāĻ­āĻžāĻŦā§‡āĻ‡ āĻĢāĻžāĻ‡āĻ¨āĻžāĻ˛ build.gradle āĻāĻŸāĻŋ āĻĻā§‡āĻ–āĻ¤ā§‡ āĻšāĻŦā§‡:

āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻŦāĻŋāĻ˛ā§āĻĄ.āĻ—ā§āĻ°ā§‡āĻĄāĻ˛ āĻ•ā§‹āĻĄ

plugins {
    id 'java'
    id 'maven-publish'
    id 'signing'
}

java {
    sourceCompatibility = JavaVersion.VERSION_1_8
    targetCompatibility = JavaVersion.VERSION_1_8
    withJavadocJar()
    withSourcesJar()
}

group 'io.github.githublogin'
archivesBaseName = 'projectname'
version = System.getenv('RELEASE_VERSION') ?: "0.0.1"

repositories {
    mavenCentral()
}

dependencies {
    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.5.2'
    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.5.2'
}

test {
    useJUnitPlatform()
}

jar {
    from sourceSets.main.output
    from sourceSets.main.allJava
}

signing {
    sign publishing.publications
}

publishing {
    publications {
        mavenJava(MavenPublication) {
            customizePom(pom)
            groupId group
            artifactId archivesBaseName
            version version

            from components.java
        }
    }
    repositories {
        maven {
            url "https://oss.sonatype.org/service/local/staging/deploy/maven2"
            credentials {
                username sonatypeUsername
                password sonatypePassword
            }
        }
    }
}

def customizePom(pom) {
    pom.withXml {
        def root = asNode()

        root.dependencies.removeAll { dep ->
            dep.scope == "test"
        }

        root.children().last() + {
            resolveStrategy = DELEGATE_FIRST

            description 'Some description of artifact'
            name 'Artifct name'
            url 'https://github.com/login/projectname'
            organization {
                name 'com.github.login'
                url 'https://github.com/githublogin'
            }
            issueManagement {
                system 'GitHub'
                url 'https://github.com/githublogin/projectname/issues'
            }
            licenses {
                license {
                    name 'The Apache License, Version 2.0'
                    url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
                }
            }
            scm {
                url 'https://github.com/githublogin/projectname'
                connection 'scm:https://github.com/githublogin/projectname.git'
                developerConnection 'scm:git://github.com/githublogin/projectname.git'
            }
            developers {
                developer {
                    id 'dev'
                    name 'DevName'
                    email '[email protected]'
                }
            }
        }
    }
}

āĻ†āĻŽāĻŋ āĻ¨ā§‹āĻŸ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻžāĻ‡ āĻ¯ā§‡ āĻ†āĻŽāĻ°āĻž āĻĒāĻ°āĻŋāĻŦā§‡āĻļ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻļā§€āĻ˛ āĻĨā§‡āĻ•ā§‡ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖāĻŸāĻŋ āĻĒāĻžāĻ‡: System.getenv('RELEASE_VERSION'). āĻ†āĻŽāĻ°āĻž āĻ¸āĻŽāĻžāĻŦā§‡āĻļā§‡āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻāĻŸāĻŋ āĻĒā§āĻ°āĻ•āĻžāĻļ āĻ•āĻ°āĻŦ āĻāĻŦāĻ‚ āĻŸā§āĻ¯āĻžāĻ— āĻ¨āĻžāĻŽ āĻĨā§‡āĻ•ā§‡ āĻāĻŸāĻŋ āĻ—ā§āĻ°āĻšāĻŖ āĻ•āĻ°āĻŦāĨ¤

PGP āĻ•ā§€ āĻĒā§āĻ°āĻœāĻ¨ā§āĻŽ

Sonatype-āĻāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§€āĻ¯āĻŧāĻ¤āĻžāĻ—ā§āĻ˛āĻŋāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻāĻ•āĻŸāĻŋ āĻšāĻ˛ āĻ¯ā§‡ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĢāĻžāĻ‡āĻ˛ āĻāĻ•āĻŸāĻŋ GPG/PGP āĻ•ā§€ āĻĻāĻŋāĻ¯āĻŧā§‡ āĻ¸ā§āĻŦāĻžāĻ•ā§āĻˇāĻ° āĻ•āĻ°āĻž āĻ‰āĻšāĻŋāĻ¤āĨ¤ āĻāĻ‡ āĻœāĻ¨ā§āĻ¯ āĻ†āĻŽāĻ°āĻž āĻ¯āĻžāĻ‡ āĻāĻ–āĻžāĻ¨ā§‡ āĻāĻŦāĻ‚ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ…āĻĒāĻžāĻ°ā§‡āĻŸāĻŋāĻ‚ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡āĻ° āĻœāĻ¨ā§āĻ¯ GnuPG āĻ‡āĻ‰āĻŸāĻŋāĻ˛āĻŋāĻŸāĻŋ āĻĄāĻžāĻ‰āĻ¨āĻ˛ā§‹āĻĄ āĻ•āĻ°ā§āĻ¨āĨ¤

  • āĻ†āĻŽāĻ°āĻž āĻāĻ•āĻŸāĻŋ āĻŽā§‚āĻ˛ āĻœā§‹āĻĄāĻŧāĻž āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻŋ: gpg --gen-key, āĻāĻ•āĻŸāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ° āĻ¨āĻžāĻŽ, āĻ‡-āĻŽā§‡āĻ‡āĻ˛ āĻ˛āĻŋāĻ–ā§āĻ¨ āĻāĻŦāĻ‚ āĻāĻ•āĻŸāĻŋ āĻĒāĻžāĻ¸āĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻĄ āĻ¸ā§‡āĻŸ āĻ•āĻ°ā§āĻ¨āĨ¤
  • āĻ†āĻŽāĻ°āĻž āĻ–ā§āĻœā§‡ āĻŦā§‡āĻ° āĻ•āĻ°āĻŦ id āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻ¸āĻš āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ•ā§€: gpg --list-secret-keys --keyid-format short. āĻ¸ā§āĻ˛ā§āĻ¯āĻžāĻļā§‡āĻ° āĻĒāĻ°ā§‡ āĻ†āĻ‡āĻĄāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ•āĻ°āĻž āĻšāĻŦā§‡, āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ: rsa2048/9B695056
  • āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°ā§‡ āĻ¸āĻ°ā§āĻŦāĻœāĻ¨ā§€āĻ¨ āĻ•ā§€ āĻĒā§āĻ°āĻ•āĻžāĻļ āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡ https://keys.openpgp.org āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻ¸āĻš: gpg --keyserver [https://keys.openpgp.org](https://keys.openpgp.org/) --send-keys 9B695056
  • āĻ†āĻŽāĻ°āĻž āĻ—ā§‹āĻĒāĻ¨ āĻ•ā§€āĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻ°ā§āĻŦāĻŋāĻšāĻžāĻ°ā§‡ āĻ°āĻĒā§āĻ¤āĻžāĻ¨āĻŋ āĻ•āĻ°āĻŋ, āĻ­āĻŦāĻŋāĻˇā§āĻ¯āĻ¤ā§‡ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻāĻŸāĻŋāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻšāĻŦā§‡: gpg --export-secret-key 9B695056 > D:\gpg\9B695056.gpg

Github āĻ…ā§āĻ¯āĻžāĻ•āĻļāĻ¨ āĻ¸ā§‡āĻŸ āĻ†āĻĒ āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡

āĻ†āĻ¸ā§āĻ¨ āĻšā§‚āĻĄāĻŧāĻžāĻ¨ā§āĻ¤ āĻĒāĻ°ā§āĻ¯āĻžāĻ¯āĻŧā§‡ āĻšāĻ˛ā§‡ āĻ¯āĻžāĻ‡, āĻŦāĻŋāĻ˛ā§āĻĄ āĻ¸ā§‡āĻŸ āĻ†āĻĒ āĻ•āĻ°āĻŋ āĻāĻŦāĻ‚ Github āĻ…ā§āĻ¯āĻžāĻ•āĻļāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ¸ā§āĻŦāĻ¯āĻŧāĻ‚āĻ•ā§āĻ°āĻŋāĻ¯āĻŧ-āĻĒā§āĻ°āĻ•āĻžāĻļ āĻ•āĻ°āĻŋāĨ¤
Github āĻ…ā§āĻ¯āĻžāĻ•āĻļāĻ¨ āĻšāĻ˛ āĻāĻŽāĻ¨ āĻāĻ•āĻŸāĻŋ āĻŦā§ˆāĻļāĻŋāĻˇā§āĻŸā§āĻ¯ āĻ¯āĻž āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖ CI/CD āĻšāĻ•ā§āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻ— āĻ•āĻ°ā§‡ āĻ•āĻ°ā§āĻŽāĻĒā§āĻ°āĻŦāĻžāĻš āĻ¸ā§āĻŦāĻ¯āĻŧāĻ‚āĻ•ā§āĻ°āĻŋāĻ¯āĻŧ āĻ•āĻ°āĻ¤ā§‡ āĻĻā§‡āĻ¯āĻŧāĨ¤ āĻŦāĻŋāĻ˛ā§āĻĄ, āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻāĻŦāĻ‚ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻž āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻ‡āĻ­ā§‡āĻ¨ā§āĻŸ āĻĻā§āĻŦāĻžāĻ°āĻž āĻŸā§āĻ°āĻŋāĻ—āĻžāĻ° āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡: āĻ•ā§‹āĻĄ āĻĒā§āĻļ, āĻ°āĻŋāĻ˛āĻŋāĻœ āĻ¤ā§ˆāĻ°āĻŋ āĻŦāĻž āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĨ¤ āĻāĻ‡ āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻžāĻ°āĻŋāĻ¤āĻž āĻ¸āĻ°ā§āĻŦāĻœāĻ¨ā§€āĻ¨ āĻ¸āĻ‚āĻ—ā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•ā§‡āĻŦāĻžāĻ°ā§‡ āĻŦāĻŋāĻ¨āĻžāĻŽā§‚āĻ˛ā§āĻ¯ā§‡āĨ¤

āĻāĻ‡ āĻŦāĻŋāĻ­āĻžāĻ—ā§‡, āĻ†āĻŽāĻŋ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻĻā§‡āĻ–āĻžāĻŦ āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻŦāĻŋāĻ˛ā§āĻĄ āĻāĻŦāĻ‚ āĻĒā§āĻļ āĻ•ā§‹āĻĄ āĻ¸ā§‡āĻŸ āĻ†āĻĒ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻ¯āĻŧ āĻāĻŦāĻ‚ āĻ°āĻŋāĻ˛āĻŋāĻœā§‡āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ¸ā§‹āĻ¨āĻžāĻŸāĻžāĻ‡āĻĒ āĻ°āĻŋāĻĒā§‹āĻœāĻŋāĻŸāĻ°āĻŋāĻ¤ā§‡ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻ¯āĻŧ, āĻ¸ā§‡āĻ‡āĻ¸āĻžāĻĨā§‡ āĻ¸āĻŋāĻ•ā§āĻ°ā§‡āĻŸ āĻ¸ā§‡āĻŸ āĻ†āĻĒ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻ¯āĻŧāĨ¤

āĻ†āĻŽāĻ°āĻž āĻ—ā§‹āĻĒāĻ¨ āĻ¸ā§‡āĻŸ

āĻ¸ā§āĻŦāĻ¯āĻŧāĻ‚āĻ•ā§āĻ°āĻŋāĻ¯āĻŧ āĻ¸āĻŽāĻžāĻŦā§‡āĻļ āĻāĻŦāĻ‚ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻžāĻ° āĻœāĻ¨ā§āĻ¯, āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻŦā§‡āĻļ āĻ•āĻ¯āĻŧā§‡āĻ•āĻŸāĻŋ āĻ—ā§‹āĻĒāĻ¨ āĻŽāĻžāĻ¨ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨, āĻ¯ā§‡āĻŽāĻ¨ āĻ•ā§€ āĻ†āĻ‡āĻĄāĻŋ, āĻ•ā§€ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ†āĻŽāĻ°āĻž āĻ¯ā§‡ āĻĒāĻžāĻ¸āĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻĄāĻŸāĻŋ āĻĻāĻŋāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛āĻžāĻŽ, PGP āĻ•ā§€ āĻ¨āĻŋāĻœā§‡āĻ‡, āĻāĻŦāĻ‚ āĻ¸ā§‹āĻ¨āĻžāĻŸāĻžāĻ‡āĻĒ āĻ˛āĻ—āĻ‡āĻ¨/āĻĒāĻžāĻ¸āĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻĄāĨ¤ āĻ†āĻĒāĻ¨āĻŋ āĻ¤āĻžāĻĻā§‡āĻ° āĻ¸āĻ‚āĻ—ā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛ āĻ¸ā§‡āĻŸāĻŋāĻ‚āĻ¸ā§‡ āĻāĻ•āĻŸāĻŋ āĻŦāĻŋāĻļā§‡āĻˇ āĻŦāĻŋāĻ­āĻžāĻ—ā§‡ āĻ¸ā§‡āĻŸ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨:

āĻ¸ā§‹āĻ¨āĻžāĻŸāĻžāĻ‡āĻĒ āĻŽāĻžāĻ­ā§‡āĻ¨ āĻ¸ā§‡āĻ¨ā§āĻŸā§āĻ°āĻžāĻ˛ āĻ°āĻŋāĻĒā§‹āĻœāĻŋāĻŸāĻ°āĻŋāĻ¤ā§‡ āĻœāĻžāĻ­āĻž āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒ āĻĒā§āĻ°āĻ•āĻžāĻļ āĻ•āĻ°āĻ¤ā§‡ āĻ—ā§āĻ°ā§‡āĻĄāĻ˛ āĻāĻŦāĻ‚ āĻ—āĻŋāĻĨā§āĻŦ āĻ…ā§āĻ¯āĻžāĻ•āĻļāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž

āĻ†āĻŽāĻ°āĻž āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻ–āĻŋāĻ¤ āĻ­ā§‡āĻ°āĻŋāĻ¯āĻŧā§‡āĻŦāĻ˛ āĻ¸ā§‡āĻŸ āĻ•āĻ°āĻŋ:

  • SONATYPE_USERNAME / SONATYPE_PASSWORD - āĻ˛āĻ—āĻ‡āĻ¨ / āĻĒāĻžāĻ¸āĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻĄ āĻ¯āĻž āĻ†āĻŽāĻ°āĻž āĻ¸ā§‹āĻ¨āĻžāĻŸāĻžāĻ‡āĻĒā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻ¨ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻĒā§āĻ°āĻŦā§‡āĻļ āĻ•āĻ°āĻŋāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛āĻžāĻŽ
  • SIGNING_KEYID/SIGNING_PASSWORD — PGP āĻ•ā§€ āĻ†āĻ‡āĻĄāĻŋ āĻāĻŦāĻ‚ āĻĒāĻžāĻ¸āĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻĄ āĻĒā§āĻ°āĻœāĻ¨ā§āĻŽā§‡āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ¸ā§‡āĻŸ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤

āĻ†āĻŽāĻŋ āĻ†āĻ°āĻ“ āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤āĻ­āĻžāĻŦā§‡ GPG_KEY_CONTENTS āĻ­ā§‡āĻ°āĻŋāĻ¯āĻŧā§‡āĻŦāĻ˛ā§‡ āĻĨāĻžāĻ•āĻ¤ā§‡ āĻšāĻžāĻ‡āĨ¤ āĻ†āĻ¸āĻ˛ āĻŦāĻŋāĻˇāĻ¯āĻŧāĻŸāĻŋ āĻšāĻ˛ āĻĒā§āĻ°āĻ•āĻžāĻļāĻ¨āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻŦā§āĻ¯āĻ•ā§āĻ¤āĻŋāĻ—āĻ¤ PGP āĻ•ā§€ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§ˇ āĻāĻŸāĻŋ āĻ—ā§‹āĻĒāĻ¨ā§‡ āĻĒā§‹āĻ¸ā§āĻŸ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯, āĻ†āĻŽāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡āĻ›āĻŋ āĻ¨āĻŋāĻ°ā§āĻĻā§‡āĻļāĻžāĻŦāĻ˛ā§€ āĻāĻŦāĻ‚ āĻ‰āĻĒāĻ°āĻ¨ā§āĻ¤ā§ āĻ•āĻ°ā§āĻŽ āĻāĻ•āĻŸāĻŋ āĻ¸āĻ‚āĻ–ā§āĻ¯āĻž āĻ¤ā§ˆāĻ°āĻŋ.

  • āĻ†āĻ¸ā§āĻ¨ gpg āĻĻāĻŋāĻ¯āĻŧā§‡ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ•ā§€ āĻāĻ¨āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸ āĻ•āĻ°āĻŋ: gpg --symmetric --cipher-algo AES256 9B695056.gpgāĻāĻ•āĻŸāĻŋ āĻĒāĻžāĻ¸āĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻĄ āĻĒā§āĻ°āĻŦā§‡āĻļ āĻ•āĻ°ā§‡āĨ¤ āĻāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻ­ā§‡āĻ°āĻŋāĻ¯āĻŧā§‡āĻŦāĻ˛ā§‡ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻ•āĻ°āĻž āĻ‰āĻšāĻŋāĻ¤: SECRET_PASSPHRASEā§ˇ
  • āĻ†āĻ¸ā§āĻ¨ āĻŦā§‡āĻ¸64 āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻĒā§āĻ°āĻžāĻĒā§āĻ¤ āĻāĻ¨āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸ āĻ•āĻ°āĻž āĻ•ā§€āĻŸāĻŋāĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻĒāĻžāĻ ā§āĻ¯ āĻ†āĻ•āĻžāĻ°ā§‡ āĻ…āĻ¨ā§āĻŦāĻžāĻĻ āĻ•āĻ°āĻŋ: base64 9B695056.gpg.gpg > 9B695056.txt. āĻŦāĻŋāĻˇāĻ¯āĻŧāĻŦāĻ¸ā§āĻ¤ā§ āĻ­ā§‡āĻ°āĻŋāĻ¯āĻŧā§‡āĻŦāĻ˛ā§‡ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻ•āĻ°āĻž āĻšāĻŦā§‡: GPG_KEY_CONTENTSāĨ¤

āĻ•ā§‹āĻĄ āĻĒā§āĻļ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻāĻŦāĻ‚ āĻĒāĻŋāĻ†āĻ° āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ¸ā§‡āĻŸāĻ†āĻĒ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§āĻ¨

āĻĒā§āĻ°āĻĨāĻŽā§‡ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ†āĻĒāĻ¨āĻžāĻ° āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒā§‡āĻ° āĻ°ā§āĻŸā§‡ āĻāĻ•āĻŸāĻŋ āĻĢā§‹āĻ˛ā§āĻĄāĻžāĻ° āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡: .github/workflows.

āĻāĻŸāĻŋāĻ¤ā§‡, āĻĢāĻžāĻ‡āĻ˛āĻŸāĻŋ āĻšāĻŋāĻšā§āĻ¨āĻŋāĻ¤ āĻ•āĻ°ā§āĻ¨, āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, gradle-ci-build.yml āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻ–āĻŋāĻ¤ āĻŦāĻŋāĻˇāĻ¯āĻŧāĻŦāĻ¸ā§āĻ¤ā§ āĻ¸āĻš:

name: build

on:
  push:
    branches:
      - master
      - dev
      - testing
  pull_request:

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v1
      - name: Set up JDK 8
        uses: actions/setup-java@v1
        with:
          java-version: 8

      - name: Build with Gradle
        uses: eskatos/gradle-command-action@v1
        with:
          gradle-version: current
          arguments: build -PsonatypeUsername=${{secrets.SONATYPE_USERNAME}} -PsonatypePassword=${{secrets.SONATYPE_PASSWORD}}

āĻļāĻžāĻ–āĻžāĻ—ā§āĻ˛āĻŋāĻ¤ā§‡ āĻ ā§‡āĻ˛ā§‡ āĻĻā§‡āĻ“āĻ¯āĻŧāĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻāĻ‡ āĻ•āĻ°ā§āĻŽāĻĒā§āĻ°āĻŦāĻžāĻšāĻŸāĻŋ āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻ° āĻ•āĻ°āĻž āĻšāĻŦā§‡ master, dev и testing, āĻāĻ›āĻžāĻĄāĻŧāĻžāĻ“ āĻĒā§āĻ˛ āĻ…āĻ¨ā§āĻ°ā§‹āĻ§ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧāĨ¤

āĻ•āĻžāĻœā§‡āĻ° āĻŦāĻŋāĻ­āĻžāĻ—āĻŸāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ‡āĻ­ā§‡āĻ¨ā§āĻŸāĻ—ā§āĻ˛āĻŋāĻ¤ā§‡ āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻ° āĻ•āĻ°āĻžāĻ° āĻĒāĻĻāĻ•ā§āĻˇā§‡āĻĒāĻ—ā§āĻ˛āĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ•āĻ°ā§‡āĨ¤ āĻāĻ‡ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡, āĻ†āĻŽāĻ°āĻž āĻ‰āĻŦā§āĻ¨ā§āĻŸā§āĻ° āĻ¸āĻ°ā§āĻŦāĻļā§‡āĻˇ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻŦ, āĻœāĻžāĻ­āĻž 8 āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻŦ āĻāĻŦāĻ‚ āĻ—ā§āĻ°ā§‡āĻĄāĻ˛ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻĒā§āĻ˛āĻžāĻ—āĻ‡āĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻŦāĨ¤ eskatos/gradle-command-action@v1āĻ¯āĻž, āĻ¨āĻŋāĻ°ā§āĻŽāĻžāĻ¤āĻžāĻ° āĻ¸āĻ°ā§āĻŦāĻļā§‡āĻˇ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡, āĻ¨āĻŋāĻ°ā§āĻĻā§‡āĻļāĻŋāĻ¤ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻšāĻžāĻ˛āĻžāĻŦā§‡ arguments. āĻ­ā§‡āĻ°āĻŋāĻ¯āĻŧā§‡āĻŦāĻ˛ secrets.SONATYPE_USERNAME и secrets.SONATYPE_PASSWORD āĻāĻ‡ āĻ—ā§‹āĻĒāĻ¨ āĻ†āĻŽāĻ°āĻž āĻ†āĻ—ā§‡ āĻœāĻŋāĻœā§āĻžāĻžāĻ¸āĻž.

āĻŦāĻŋāĻ˛ā§āĻĄ āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻ…ā§āĻ¯āĻžāĻ•āĻļāĻ¨ āĻŸā§āĻ¯āĻžāĻŦā§‡ āĻĒā§āĻ°āĻ¤āĻŋāĻĢāĻ˛āĻŋāĻ¤ āĻšāĻŦā§‡:

āĻ¸ā§‹āĻ¨āĻžāĻŸāĻžāĻ‡āĻĒ āĻŽāĻžāĻ­ā§‡āĻ¨ āĻ¸ā§‡āĻ¨ā§āĻŸā§āĻ°āĻžāĻ˛ āĻ°āĻŋāĻĒā§‹āĻœāĻŋāĻŸāĻ°āĻŋāĻ¤ā§‡ āĻœāĻžāĻ­āĻž āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒ āĻĒā§āĻ°āĻ•āĻžāĻļ āĻ•āĻ°āĻ¤ā§‡ āĻ—ā§āĻ°ā§‡āĻĄāĻ˛ āĻāĻŦāĻ‚ āĻ—āĻŋāĻĨā§āĻŦ āĻ…ā§āĻ¯āĻžāĻ•āĻļāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž

āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻ°āĻŋāĻ˛āĻŋāĻœ āĻĒā§āĻ°āĻ•āĻžāĻļāĻŋāĻ¤ āĻšāĻ˛ā§‡ āĻ¸ā§āĻŦāĻ¯āĻŧāĻ‚āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻ­āĻžāĻŦā§‡ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻ•āĻ°ā§āĻ¨

āĻ…āĻŸā§‹āĻĄāĻŋāĻĒā§āĻ˛āĻ¯āĻŧā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻĒā§ƒāĻĨāĻ• āĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ•āĻĢā§āĻ˛ā§‹ āĻĢāĻžāĻ‡āĻ˛ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻ¯āĻžāĻ• gradle-ci-publish.yml:

name: publish

on:
  push:
    tags:
      - 'v*'

jobs:
  publish:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v1
      - name: Set up JDK 8
        uses: actions/setup-java@v1
        with:
          java-version: 8

      - name: Prepare to publish
        run: |
          echo '${{secrets.GPG_KEY_CONTENTS}}' | base64 -d > publish_key.gpg
          gpg --quiet --batch --yes --decrypt --passphrase="${{secrets.SECRET_PASSPHRASE}}" 
          --output secret.gpg publish_key.gpg
          echo "::set-env name=RELEASE_VERSION::${GITHUB_REF:11}"

      - name: Publish with Gradle
        uses: eskatos/gradle-command-action@v1
        with:
          gradle-version: current
          arguments: test publish -Psigning.secretKeyRingFile=secret.gpg -Psigning.keyId=${{secrets.SIGNING_KEYID}} -Psigning.password=${{secrets.SIGNING_PASSWORD}} -PsonatypeUsername=${{secrets.SONATYPE_USERNAME}} -PsonatypePassword=${{secrets.SONATYPE_PASSWORD}}

āĻĢāĻžāĻ‡āĻ˛āĻŸāĻŋ āĻ†āĻ—ā§‡āĻ°āĻŸāĻŋāĻ° āĻ¸āĻžāĻĨā§‡ āĻĒā§āĻ°āĻžāĻ¯āĻŧ āĻ…āĻ­āĻŋāĻ¨ā§āĻ¨, āĻ¯ā§‡ āĻ‡āĻ­ā§‡āĻ¨ā§āĻŸā§‡ āĻāĻŸāĻŋ āĻŸā§āĻ°āĻŋāĻ—āĻžāĻ° āĻ•āĻ°āĻž āĻšāĻŦā§‡ āĻŦāĻžāĻĻā§‡ā§ˇ āĻāĻ‡ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡, āĻāĻŸāĻŋ v āĻĻāĻŋāĻ¯āĻŧā§‡ āĻļā§āĻ°ā§ āĻšāĻ“āĻ¯āĻŧāĻž āĻāĻ•āĻŸāĻŋ āĻ¨āĻžāĻŽ āĻĻāĻŋāĻ¯āĻŧā§‡ āĻāĻ•āĻŸāĻŋ āĻŸā§āĻ¯āĻžāĻ— āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻžāĻ° āĻ˜āĻŸāĻ¨āĻžāĨ¤

āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ā§‡āĻ° āĻ†āĻ—ā§‡, āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ—ā§‹āĻĒāĻ¨ā§€āĻ¯āĻŧāĻ¤āĻž āĻĨā§‡āĻ•ā§‡ PGP āĻ•ā§€ āĻŦā§‡āĻ° āĻ•āĻ°ā§‡ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒā§‡āĻ° āĻŽā§‚āĻ˛ā§‡ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡, āĻ¸ā§‡āĻ‡āĻ¸āĻžāĻĨā§‡ āĻāĻŸāĻŋāĻ•ā§‡ āĻĄāĻŋāĻ•ā§āĻ°āĻŋāĻĒā§āĻŸ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤ āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§€, āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻŦāĻŋāĻļā§‡āĻˇ āĻĒāĻ°āĻŋāĻŦā§‡āĻļ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻļā§€āĻ˛ āĻ¸ā§‡āĻŸ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡ RELEASE_VERSION āĻ¯āĻž āĻ†āĻŽāĻ°āĻž āĻ‰āĻ˛ā§āĻ˛ā§‡āĻ– āĻ•āĻ°āĻŋ gradle.build āĻĢāĻžāĻ‡āĻ˛ āĻāĻ‡ āĻ¸āĻŦ āĻŦāĻŋāĻ­āĻžāĻ—ā§‡ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ Prepare to publish. āĻ†āĻŽāĻ°āĻž GPG_KEY_CONTENTS āĻ­ā§‡āĻ°āĻŋāĻ¯āĻŧā§‡āĻŦāĻ˛ āĻĨā§‡āĻ•ā§‡ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ•ā§€ āĻĒāĻžāĻ‡, āĻāĻŸāĻŋāĻ•ā§‡ āĻāĻ•āĻŸāĻŋ gpg āĻĢāĻžāĻ‡āĻ˛ā§‡ āĻ…āĻ¨ā§āĻŦāĻžāĻĻ āĻ•āĻ°āĻŋ, āĻ¤āĻžāĻ°āĻĒāĻ° āĻĢāĻžāĻ‡āĻ˛āĻŸāĻŋāĻ¤ā§‡ āĻ°ā§‡āĻ–ā§‡ āĻāĻŸāĻŋāĻ•ā§‡ āĻĄāĻŋāĻ•ā§āĻ°āĻŋāĻĒā§āĻŸ āĻ•āĻ°āĻŋ secret.gpg.

āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§€, āĻ†āĻŽāĻ°āĻž āĻāĻ•āĻŸāĻŋ āĻŦāĻŋāĻļā§‡āĻˇ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻļā§€āĻ˛ āĻšāĻžāĻ˛ā§ GITHUB_REF, āĻ¯āĻž āĻĨā§‡āĻ•ā§‡ āĻ†āĻŽāĻ°āĻž āĻŸā§āĻ¯āĻžāĻ— āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ¯ā§‡ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖāĻŸāĻŋ āĻ¸ā§‡āĻŸ āĻ•āĻ°āĻŋ āĻ¤āĻž āĻĒā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋāĨ¤ āĻāĻ‡ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻļā§€āĻ˛ āĻāĻ‡ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡ āĻĒā§āĻ°āĻžāĻ¸āĻ™ā§āĻ—āĻŋāĻ•. refs/tags/v0.0.2 āĻ¯āĻž āĻĨā§‡āĻ•ā§‡ āĻ†āĻŽāĻ°āĻž āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖ āĻĒā§‡āĻ¤ā§‡ āĻĒā§āĻ°āĻĨāĻŽ 11āĻŸāĻŋ āĻ…āĻ•ā§āĻˇāĻ° āĻ•ā§‡āĻŸā§‡ āĻĢā§‡āĻ˛ā§‡āĻ›āĻŋāĨ¤ āĻāĻ° āĻĒāĻ°ā§‡, āĻ†āĻŽāĻ°āĻž āĻĒā§āĻ°āĻ•āĻžāĻļā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ¸ā§āĻŸā§āĻ¯āĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ āĻ—ā§āĻ°ā§‡āĻĄāĻ˛ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻŋ: test publish

āĻ¸ā§‹āĻ¨āĻžāĻŸāĻžāĻ‡āĻĒ āĻ¸āĻ‚āĻ—ā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛ā§‡ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻžāĻ° āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡

āĻ°āĻŋāĻ˛āĻŋāĻœ āĻ¤ā§ˆāĻ°āĻŋ āĻšāĻ“āĻ¯āĻŧāĻžāĻ° āĻĒāĻ°ā§‡, āĻĒā§‚āĻ°ā§āĻŦāĻŦāĻ°ā§āĻ¤ā§€ āĻŦāĻŋāĻ­āĻžāĻ—ā§‡ āĻŦāĻ°ā§āĻŖāĻŋāĻ¤ āĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ•āĻĢā§āĻ˛ā§‹ āĻļā§āĻ°ā§ āĻ•āĻ°āĻž āĻ‰āĻšāĻŋāĻ¤āĨ¤ āĻāĻŸāĻŋ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯, āĻāĻ•āĻŸāĻŋ āĻ°āĻŋāĻ˛āĻŋāĻœ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§āĻ¨:

āĻ¸ā§‹āĻ¨āĻžāĻŸāĻžāĻ‡āĻĒ āĻŽāĻžāĻ­ā§‡āĻ¨ āĻ¸ā§‡āĻ¨ā§āĻŸā§āĻ°āĻžāĻ˛ āĻ°āĻŋāĻĒā§‹āĻœāĻŋāĻŸāĻ°āĻŋāĻ¤ā§‡ āĻœāĻžāĻ­āĻž āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒ āĻĒā§āĻ°āĻ•āĻžāĻļ āĻ•āĻ°āĻ¤ā§‡ āĻ—ā§āĻ°ā§‡āĻĄāĻ˛ āĻāĻŦāĻ‚ āĻ—āĻŋāĻĨā§āĻŦ āĻ…ā§āĻ¯āĻžāĻ•āĻļāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž

āĻŸā§āĻ¯āĻžāĻ—ā§‡āĻ° āĻ¨āĻžāĻŽ āĻ…āĻŦāĻļā§āĻ¯āĻ‡ v āĻĻāĻŋāĻ¯āĻŧā§‡ āĻļā§āĻ°ā§ āĻšāĻŦā§‡āĨ¤ āĻ¯āĻĻāĻŋ, āĻĒā§āĻ°āĻ•āĻžāĻļ āĻĒā§āĻ°āĻ•āĻžāĻļ āĻ•ā§āĻ˛āĻŋāĻ• āĻ•āĻ°āĻžāĻ° āĻĒāĻ°ā§‡, āĻ•āĻ°ā§āĻŽāĻĒā§āĻ°āĻŦāĻžāĻš āĻ¸āĻĢāĻ˛āĻ­āĻžāĻŦā§‡ āĻ¸āĻŽā§āĻĒāĻ¨ā§āĻ¨ āĻšāĻ¯āĻŧ, āĻ†āĻŽāĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋ āĻ¸ā§‹āĻ¨āĻžāĻŸāĻžāĻ‡āĻĒ āĻ¨ā§‡āĻ•ā§āĻ¸āĻžāĻ¸ āĻ¨āĻŋāĻļā§āĻšāĻŋāĻ¤ āĻ•āĻ°ā§āĻ¨:

āĻ¸ā§‹āĻ¨āĻžāĻŸāĻžāĻ‡āĻĒ āĻŽāĻžāĻ­ā§‡āĻ¨ āĻ¸ā§‡āĻ¨ā§āĻŸā§āĻ°āĻžāĻ˛ āĻ°āĻŋāĻĒā§‹āĻœāĻŋāĻŸāĻ°āĻŋāĻ¤ā§‡ āĻœāĻžāĻ­āĻž āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒ āĻĒā§āĻ°āĻ•āĻžāĻļ āĻ•āĻ°āĻ¤ā§‡ āĻ—ā§āĻ°ā§‡āĻĄāĻ˛ āĻāĻŦāĻ‚ āĻ—āĻŋāĻĨā§āĻŦ āĻ…ā§āĻ¯āĻžāĻ•āĻļāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž

āĻļāĻŋāĻ˛ā§āĻĒāĻ•āĻ°ā§āĻŽāĻŸāĻŋ āĻ¸ā§āĻŸā§‡āĻœāĻŋāĻ‚ āĻ­āĻžāĻ¨ā§āĻĄāĻžāĻ°ā§‡ āĻ‰āĻĒāĻ¸ā§āĻĨāĻŋāĻ¤ āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛āĨ¤ āĻāĻŸāĻŋ āĻ…āĻŦāĻŋāĻ˛āĻŽā§āĻŦā§‡ āĻ“āĻĒā§‡āĻ¨ āĻ¸ā§āĻŸā§āĻ¯āĻžāĻŸāĻžāĻ¸ā§‡ āĻ‰āĻĒāĻ¸ā§āĻĨāĻŋāĻ¤ āĻšāĻ¯āĻŧ, āĻ¤āĻžāĻ°āĻĒāĻ°ā§‡ āĻ‰āĻĒāĻ¯ā§āĻ•ā§āĻ¤ āĻŦā§‹āĻ¤āĻžāĻŽ āĻŸāĻŋāĻĒā§‡ āĻāĻŸāĻŋāĻ•ā§‡ āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¯āĻŧāĻžāĻ˛āĻŋ āĻ•ā§āĻ˛ā§‹āĻœ āĻ¸ā§āĻŸā§āĻ¯āĻžāĻŸāĻžāĻ¸ā§‡ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ° āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§€āĻ¯āĻŧāĻ¤āĻž āĻĒā§‚āĻ°āĻŖ āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ āĻ•āĻŋāĻ¨āĻž āĻ¤āĻž āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻ•āĻ°āĻžāĻ° āĻĒāĻ°ā§‡, āĻ†āĻ°ā§āĻŸāĻŋāĻĢā§āĻ¯āĻžāĻ•ā§āĻŸāĻŸāĻŋ āĻ•ā§āĻ˛ā§‹āĻœ āĻ¸ā§āĻŸā§āĻ¯āĻžāĻŸāĻžāĻ¸ā§‡ āĻšāĻ˛ā§‡ āĻ¯āĻžāĻ¯āĻŧ āĻāĻŦāĻ‚ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻ° āĻ‰āĻĒāĻ˛āĻŦā§āĻ§ āĻ¨ā§‡āĻ‡āĨ¤ āĻāĻ‡ āĻĢāĻ°ā§āĻŽā§‡, āĻāĻŸāĻŋ MavenCentral āĻ āĻļā§‡āĻˇ āĻšāĻŦā§‡āĨ¤ āĻ¸āĻŦ āĻ āĻŋāĻ• āĻĨāĻžāĻ•āĻ˛ā§‡, āĻ†āĻĒāĻ¨āĻŋ āĻŦā§‹āĻ¤āĻžāĻŽ āĻŸāĻŋāĻĒā§āĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ āĻŽā§āĻ•ā§āĻ¤āĻŋ, āĻāĻŦāĻ‚ āĻļāĻŋāĻ˛ā§āĻĒāĻ•āĻ°ā§āĻŽāĻŸāĻŋ āĻ¸ā§‹āĻ¨āĻžāĻŸāĻžāĻ‡āĻĒ āĻ¸āĻ‚āĻ—ā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛ā§‡ āĻļā§‡āĻˇ āĻšāĻŦā§‡āĨ¤

āĻ†āĻ°ā§āĻŸāĻŋāĻĢā§āĻ¯āĻžāĻ•ā§āĻŸāĻŸāĻŋ āĻŽā§āĻ¯āĻžāĻ­ā§‡āĻ¨āĻ¸ā§‡āĻ¨ā§āĻŸā§āĻ°āĻžāĻ˛ā§‡ āĻĒā§āĻ°āĻŦā§‡āĻļ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯, āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻāĻŸāĻŋāĻ° āĻœāĻ¨ā§āĻ¯ āĻœāĻŋāĻœā§āĻžāĻžāĻ¸āĻž āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡ āĻ¯āĻž āĻ†āĻŽāĻ°āĻž āĻāĻ•ā§‡āĻŦāĻžāĻ°ā§‡ āĻļā§āĻ°ā§āĻ¤ā§‡ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§‡āĻ›āĻŋāĨ¤ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻ•āĻŦāĻžāĻ° āĻāĻŸāĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡, āĻ¤āĻžāĻ‡ āĻ†āĻŽāĻ°āĻž āĻĒā§āĻ°āĻĨāĻŽāĻŦāĻžāĻ° āĻĒā§āĻ°āĻ•āĻžāĻļ āĻ•āĻ°āĻ›āĻŋāĨ¤ āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§€ āĻ¸āĻŽāĻ¯āĻŧā§‡, āĻāĻŸāĻŋāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻ¨ā§‡āĻ‡, āĻ¸āĻŦāĻ•āĻŋāĻ›ā§ āĻ¸ā§āĻŦāĻ¯āĻŧāĻ‚āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻ­āĻžāĻŦā§‡ āĻ¸āĻŋāĻ™ā§āĻ•ā§āĻ°ā§‹āĻ¨āĻžāĻ‡āĻœ āĻšāĻŦā§‡āĨ¤ āĻ¤āĻžāĻ°āĻž āĻ†āĻŽāĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻĻā§āĻ°ā§āĻ¤ āĻ¸āĻŋāĻ™ā§āĻ•ā§āĻ°ā§‹āĻ¨āĻžāĻ‡āĻœā§‡āĻļāĻ¨ āĻšāĻžāĻ˛ā§ āĻ•āĻ°ā§‡āĻ›ā§‡, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ†āĻ°ā§āĻŸāĻŋāĻĢā§āĻ¯āĻžāĻ•ā§āĻŸāĻŸāĻŋ MavenCentral-āĻ āĻ‰āĻĒāĻ˛āĻŦā§āĻ§ āĻšāĻ¤ā§‡ āĻĒā§āĻ°āĻžāĻ¯āĻŧ 5 āĻĻāĻŋāĻ¨ āĻ¸āĻŽāĻ¯āĻŧ āĻ˛ā§‡āĻ—ā§‡āĻ›ā§‡āĨ¤

āĻāĻ‡ āĻ¸āĻŦ, āĻ†āĻŽāĻ°āĻž MavenCentral āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻļāĻŋāĻ˛ā§āĻĒāĻ•āĻ°ā§āĻŽ āĻĒā§āĻ°āĻ•āĻžāĻļ āĻ•āĻ°ā§‡āĻ›āĻŋ.

āĻĻāĻ°āĻ•āĻžāĻ°ā§€ āĻ˛āĻŋāĻ™ā§āĻ•

  • āĻ…āĻ¨ā§āĻ°ā§‚āĻĒ āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§, āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° maven āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻĒā§āĻ°āĻ•āĻžāĻļ
  • āĻ‰āĻĒāĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻ•āĻžāĻ°ā§€ āĻ­āĻžāĻ¨ā§āĻĄāĻžāĻ° āĻ¸ā§‹āĻ¨āĻžāĻŸāĻžāĻ‡āĻĒ
  • āĻœāĻŋāĻ° āĻ¸ā§‹āĻ¨āĻžāĻŸāĻžāĻ‡āĻĒ āĻ¯āĻžāĻ¤ā§‡ āĻŸāĻžāĻ¸ā§āĻ• āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻ¯āĻžāĻ¯āĻŧ
  • āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ āĻ¸āĻ‚āĻ—ā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛ āĻ¯ā§‡āĻ–āĻžāĻ¨ā§‡ āĻāĻŸāĻŋ āĻ¸āĻŦ āĻ¸ā§‡āĻŸ āĻ†āĻĒ āĻ•āĻ°āĻž āĻ†āĻ›ā§‡

āĻ‰āĻ¤ā§āĻ¸: www.habr.com