рдирд┐рд░реНрднрд░рддрд╛ рд╕рдорд╛рдзрд╛рди рдЙрдкрдХрд░рдг
рдПрдХ рдирд┐рд░реНрднрд░рддрд╛ рд░рд┐рдЬрд╝реЙрд▓реНрд╡рд░ (рдмрд╛рдж рдореЗрдВ рд░рд┐рдЬрд╝реЙрд▓реНрд╡рд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрджрд░реНрднрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд▓рдЧрднрдЧ рдЕрдиреБрд╡рд╛рджред) рдпрд╛ рдПрдХ рдкреИрдХреЗрдЬ рдкреНрд░рдмрдВрдзрдХ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╣реИ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рдореЙрдбреНрдпреВрд▓ рдХреЗ рдПрдХ рдирд┐рд░рдВрддрд░ рд╕реЗрдЯ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред
рдмрд╛рдзрд╛рдПрдВ рдЖрдорддреМрд░ рдкрд░ рдореЙрдбреНрдпреВрд▓ рдирд╛рдореЛрдВ рдФрд░ рд╕рдВрд╕реНрдХрд░рдг рд╕рдВрдЦреНрдпрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреА рдЬрд╛рддреА рд╣реИрдВред рдЬреЗрд╡реАрдПрдо рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдореЗрдВ рдорд╛рд╡реЗрди рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП, рд╕рдВрдЧрдарди рдХрд╛ рдирд╛рдо (рд╕рдореВрд╣ рдЖрдИрдбреА) рднреА рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдореЗрдВ рд╕рдВрд╕реНрдХрд░рдг рд╢реНрд░реЗрдгреА, рдмрд╣рд┐рд╖реНрдХреГрдд рдореЙрдбреНрдпреВрд▓, рд╕рдВрд╕реНрдХрд░рдг рдУрд╡рд░рд░рд╛рдЗрдб рдЖрджрд┐ рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред
рд╕рдВрдХреБрд▓ рдХреА рддреАрди рдореБрдЦреНрдп рд╢реНрд░реЗрдгрд┐рдпрд╛рдВ OS рд╕рдВрдХреБрд▓ (рд╣реЛрдордмреНрд░реЗ, рдбреЗрдмрд┐рдпрди рдкреИрдХреЗрдЬ рдЖрджрд┐) рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдпреА рдЧрдпреА рд╣реИрдВред
рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓ (CPAN, RubyGem, Maven, рдЖрджрд┐) рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдПрдХреНрд╕рдЯреЗрдВрд╢рди (рдЧреНрд░рд╣рдг рдкреНрд▓рдЧрдЗрдиреНрд╕, IntelliJ рдкреНрд▓рдЧрдЗрдиреНрд╕, рд╡реАрдПрд╕ рдХреЛрдб рдПрдХреНрд╕рдЯреЗрдВрд╢рди)ред
рд░рд┐рдЬрд╝реЙрд▓реНрд╡рд░ рд╢рдмреНрджрд╛рд░реНрде
рдкрд╣рд▓реЗ рд╕рдиреНрдирд┐рдХрдЯрди рдореЗрдВ, рд╣рдо рдореЙрдбреНрдпреВрд▓ рдХреА рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдПрдХ рдбреАрдПрдЬреА (рдирд┐рд░реНрджреЗрд╢рд┐рдд рдПрд╕рд╛рдЗрдХреНрд▓рд┐рдХ рдЧреНрд░рд╛рдл, рдирд┐рд░реНрджреЗрд╢рд┐рдд рдПрд╕рд╛рдЗрдХреНрд▓рд┐рдХ рдЧреНрд░рд╛рдл) рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЗрд╕ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреЛ рдирд┐рд░реНрднрд░рддрд╛ рдЧреНрд░рд╛рдл рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рджреЛ рдореЙрдбреНрдпреВрд▓ рдХреА рдирд┐рд░реНрднрд░рддрд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
a:1.0
c:1.0
рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИb:1.0
c:1.0
рдФрд░ d:1.0
рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ
+-----+ +-----+ |a:1.0| |b:1.0| +--+--+ +--+--+ | | +<-------+ | | vv +--+--+ +--+--+ |c:1.0| |d:1.0| +-----+ +-----+
рдпрджрд┐ рдореЙрдбреНрдпреВрд▓ a:1.0
рдФрд░ b:1.0
рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдирд┐рд░реНрднрд░рддрд╛ рдХреА рдкреВрд░реА рд╕реВрдЪреА a:1.0
, b:1.0
, c:1.0
рдФрд░ d:1.0
ред рдФрд░ рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдЯреНрд░реА рдЯреВрд░ рд╣реИред
рдпрджрд┐ рд╕рдВрдХреНрд░рдордгреАрдп рдирд┐рд░реНрднрд░рддрд╛ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреА рдЬрд╛рддреА рд╣реИ, рддреЛ рд╕реНрдерд┐рддрд┐ рдФрд░ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реЛ рдЬрд╛рдПрдЧреА:
a:1.0
c:1.0
рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИb:1.0
c:[1.0,2)
рдФрд░ d:1.0
рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ
+-----+ +-----+ |a:1.0| |b:1.0| +--+--+ +--+--+ | | | +-----------+ | | | vvv +--+--+ +--+------+ +--+--+ |c:1.0| |c:[1.0,2)| |d:1.0| +-----+ +---------+ +-----+
рдпрд╛, рдпрджрд┐ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрд╕реНрдХрд░рдг рд╕рдХрд░реНрдордХ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИрдВ:
a:1.0
c:1.0
рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИb:1.0
c:1.2
рдФрд░ d:1.2
рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ
рдпрд╛, рдпрджрд┐ рдЕрдкрд╡рд╛рдж рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд▓рд┐рдП рдлреЗрдВрдХ рджрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ:
a:1.0
рдкрд░ рдирд┐рд░реНрднрд░рддрд╛, рдЬреЛ c:1.0
рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, c:*
рдХреЛ рдЫреЛрдбрд╝рдХрд░b:1.0
c:1.2
рдФрд░ d:1.2
рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ
рд╡рд┐рднрд┐рдиреНрди рд░рд┐рдЬрд╝реЙрд▓реНрд╡рд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреА рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рддреЗ рд╣реИрдВред рдореИрдВ рдРрд╕реЗ рдирд┐рдпрдореЛрдВ рдХреЛ рд░рд┐рдЬрд╝реЙрд▓реНрд╡рд░ рдХреЗ рд╢рдмреНрджрд╛рд░реНрде рдХрд╣рддрд╛ рд╣реВрдВред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рд╢рдмреНрджрд╛рд░реНрдереЛрдВ рдХреЛ рдЬрд╛рдирдирд╛ рдкрдбрд╝ рд╕рдХрддрд╛ рд╣реИ:
- рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╢рдмреНрджрд╛рд░реНрде (рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдирд┐рд░реНрдорд╛рдг рдЙрдкрдХрд░рдг рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд);
- рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╢рдмреНрджрд╛рд░реНрде (рдирд┐рд░реНрдорд╛рдг рдЙрдкрдХрд░рдг рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рд▓реЗрдЦрдХ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд);
- рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╢рдмреНрджрд╛рд░реНрде рдЬреЛ рдЖрдкрдХреЗ рдореЙрдбреНрдпреВрд▓ рдПрдХ рдирд┐рд░реНрднрд░рддрд╛ (рдПрдВрдб-рдпреВрдЬрд╝рд░ рдмрд┐рд▓реНрдб рдЯреВрд▓ рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд) рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред
JVM рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рд╕рдорд╛рдзрд╛рди рдЙрдкрдХрд░рдг
рдЪреВрдВрдХрд┐ рдореИрдВ sbt
рд╕рдорд░реНрдерди рдХрд░рддрд╛ sbt
, рдореБрдЭреЗ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ JVM рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдореЗрдВ рдХрд╛рдо рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рд╢рдмреНрджрд╛рд░реНрде рдорд╛рд╡реЗрди: рдирд┐рдХрдЯрддрдо-рдЬреАрдд
рдРрд╕реЗ рдЧреНрд░рд╛рдлрд╝ рдореЗрдВ рдЬрд╣рд╛рдВ рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рд╕рдВрдШрд░реНрд╖ рд╣реЛрддрд╛ рд╣реИ (рдирд┐рд░реНрднрд░рддрд╛ рдЧреНрд░рд╛рдлрд╝ рдореЗрдВ рдШрдЯрдХ d
рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдВрд╕реНрдХрд░рдг рд╣реЛрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП d:1.0
рдФрд░ d:2.0
), рдорд╛рд╡реЗрди рд╕рдВрдШрд░реНрд╖ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдХрдЯрддрдо-рдЬреАрдд рдХреА рд░рдгрдиреАрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рд╕рдВрдШрд░реНрд╖ - рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЬреЛ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреА рд╣реИ рдХрд┐ рдХрд┐рд╕реА рд╡рд┐рд░реВрдкрдг рд╕рд╛рдХреНрд╖реНрдп рдХреЗ рдХрд┐рд╕ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЪрдпрди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЕрдЧрд░ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдмреАрдЪ рдПрдХ рд╣реА рд╡рд┐рд░реВрдкрдг рд╕рд╛рдХреНрд╖реНрдп рдХреЗ рдХрдИ рд╕рдВрд╕реНрдХрд░рдг рдорд┐рд▓рддреЗ рд╣реИрдВред рдорд╛рд╡реЗрди рдирд┐рдХрдЯрддрдо рдкрд░рд┐рднрд╛рд╖рд╛ рдХрд╛ рдЪрдпрди рдХрд░рддрд╛ рд╣реИред рдпрд╛рдиреА рдЙрд╕ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдкреЗрдбрд╝ рдореЗрдВ рдЖрдкрдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕рдмрд╕реЗ рдХрд░реАрдм рд╣реИред
рдЖрдк рд╣рдореЗрд╢рд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдкреАрдУрдПрдо рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдШреЛрд╖рд┐рдд рдХрд░рдХреЗ рд╕рд╣реА рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЧрд╛рд░рдВрдЯреА рджреЗ рд╕рдХрддреЗ рд╣реИрдВред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрджрд┐ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рджреЛ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреА рд╡реГрдХреНрд╖ рдореЗрдВ рд╕рдорд╛рди рдЧрд╣рд░рд╛рдИ рд╣реИ, рддреЛ рдкрд╣рд▓реЗ рд╡рд╛рд▓реЗ рдХрд╛ рдЪрдпрди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдирд┐рдХрдЯрддрдо рдкрд░рд┐рднрд╛рд╖рд╛ рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдкреЗрдбрд╝ рдореЗрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдирд┐рдХрдЯрддрдо рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ A
, B
рдФрд░ C
рд▓рд┐рдП рдирд┐рд░реНрднрд░рддрд╛ A -> B -> C -> D 2.0
рдФрд░ A -> E -> D 1.0
рд░реВрдк C
рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИ, рддреЛ, A
, D 1.0
рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╕рдордп рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ A
рд╕реЗ D
рддрдХ рдХрд╛ рдорд╛рд░реНрдЧ E
рдЫреЛрдЯрд╛ рд╣реИ ( B
рдФрд░ C
рдорд╛рдзреНрдпрдо рд╕реЗ, рд▓рдЧрднрдЧред рдЕрдиреБрд╡рд╛рджред)ред
рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдорд╛рд╡реЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрдИ рдЬрд╛рд╡рд╛ рдореЙрдбреНрдпреВрд▓ nearest-wins
рд╢рдмреНрджрд╛рд░реНрдереЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдП рдЧрдП рдереЗред рдЙрдкрд░реЛрдХреНрдд рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕рд╛рдзрд╛рд░рдг pom.xml
рдмрдирд╛рдПрдВ:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <artifactId>foo</artifactId> <version>1.0.0</version> <packaging>jar</packaging> <dependencyManagement> <dependencies> <dependency> <groupId>com.typesafe.play</groupId> <artifactId>play-ws-standalone_2.12</artifactId> <version>1.0.1</version> </dependency> </dependencies> </dependencyManagement> </project>
mvn dependency:build-classpath
рд╣рд▓ рдХрд┐рдП рдЧрдП classpath
рд▓реМрдЯрд╛рддрд╛ рд╣реИред
рдпрд╣ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд╣реИ рдХрд┐ рдкрд░рд┐рдгрд╛рдореА рдкреЗрдбрд╝ com.typesafe:config:1.2.0
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА Akka 2.5.3
com.typesafe:config:1.3.1
рд░реВрдк рд╕реЗ com.typesafe:config:1.3.1
рдкрд░ рдирд┐рд░реНрднрд░ рд╣реЛ com.typesafe:config:1.3.1
ред
mvn dependency:tree
рдЙрд╕ рджреГрд╢реНрдп рдХреА рдкреБрд╖реНрдЯрд┐ рджреЗрддрд╛ рд╣реИ:
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ foo --- [INFO] com.example:foo:jar:1.0.0 [INFO] \- com.typesafe.play:play-ws-standalone_2.12:jar:1.0.1:compile [INFO] +- org.scala-lang:scala-library:jar:2.12.2:compile [INFO] +- javax.inject:javax.inject:jar:1:compile [INFO] +- com.typesafe:ssl-config-core_2.12:jar:0.2.2:compile [INFO] | +- com.typesafe:config:jar:1.2.0:compile [INFO] | \- org.scala-lang.modules:scala-parser-combinators_2.12:jar:1.0.4:compile [INFO] \- com.typesafe.akka:akka-stream_2.12:jar:2.5.3:compile [INFO] +- com.typesafe.akka:akka-actor_2.12:jar:2.5.3:compile [INFO] | \- org.scala-lang.modules:scala-java8-compat_2.12:jar:0.8.0:compile [INFO] \- org.reactivestreams:reactive-streams:jar:1.0.0:compile
рдХрдИ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкрд┐рдЫрдбрд╝реЗ рд╕рдВрдЧрддрддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреБрдЫ рдЕрдкрд╡рд╛рджреЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рддреНрдпрдХреНрд╖ рд╕рдВрдЧрддрддрд╛ рдХреА рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рд╣реИ, рдЬреЛ рдХрд┐ рдЦрддрд░рдирд╛рдХ рд╣реИред
рдЕрдкрд╛рдЪреЗ рдЖрдЗрд╡реА рдХреЗ рд╢рдмреНрджрд╛рд░реНрде: рдирд╡реАрдирддрдо-рдЬреАрдд
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдЕрдкрд╛рдЪреЗ рдЖрдЗрд╡реА рдирд┐рд░реНрднрд░рддрд╛ рд╕рдВрдШрд░реНрд╖ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╡реАрдирддрдо-рдЬреАрдд рдХреА рд░рдгрдиреАрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
рдпрджрд┐ рдпрд╣ рдХрдВрдЯреЗрдирд░ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ, рддреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕рдВрдШрд░реНрд╖ рдкреНрд░рдмрдВрдзрдХ рд╕рднреА рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡рд░реНрддрдорд╛рди рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕рдВрдШрд░реНрд╖ рдкреНрд░рдмрдВрдзрдХ "рдирд╡реАрдирддрдо-рд╕рдВрд╢реЛрдзрди" рд╣реИред
рдиреЛрдЯ: рдХрдВрдЯреЗрдирд░ рдХрд╛ conflicts
рдЖрдЗрд╡реА рдлрд╛рдЗрд▓ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред
рд╕рдВрд╕реНрдХрд░рдг SBT 1.3.x
рдЖрдВрддрд░рд┐рдХ рдирд┐рд░реНрднрд░рддрд╛ рд░рд┐рдЬрд╝реЙрд▓реНрд╡рд░ рдЕрдкрд╛рдЪреЗ рдЖрдЗрд╡реА рд╣реИред рдкрд╣рд▓реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ pom.xml
рдПрд╕рдмреАрдЯреА рдореЗрдВ рдереЛрдбрд╝рд╛ рдФрд░ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИ:
ThisBuild / scalaVersion := "2.12.8" ThisBuild / organization := "com.example" ThisBuild / version := "1.0.0-SNAPSHOT" lazy val root = (project in file(".")) .settings( name := "foo", libraryDependencies += "com.typesafe.play" %% "play-ws-standalone" % "1.0.1", )
sbt shell
рджрд░реНрдЬ рдХрд┐рдП рдЧрдП рдХреНрд▓рд╛рд╕рдкрд╛рде рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП show externalDependencyClasspath
sbt shell
рдбрд╛рд▓реЗрдВред рдЗрд╕реЗ com.typesafe:config:1.3.1
рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪреЗрддрд╛рд╡рдиреА рдЕрднреА рднреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреА рдЬрд╛рдПрдЧреА:
[warn] There may be incompatibilities among your library dependencies; run 'evicted' to see detailed eviction warnings.
sbt shell
рдореЗрдВ evicted
рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдЖрдкрдХреЛ рд╕рдВрдШрд░реНрд╖ рд╕рдорд╛рдзрд╛рди рд░рд┐рдкреЛрд░реНрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓рддреА рд╣реИ:
sbt:foo> evicted [info] Updating ... [info] Done updating. [info] Here are other dependency conflicts that were resolved: [info] * com.typesafe:config:1.3.1 is selected over 1.2.0 [info] +- com.typesafe.akka:akka-actor_2.12:2.5.3 (depends on 1.3.1) [info] +- com.typesafe:ssl-config-core_2.12:0.2.2 (depends on 1.2.0) [info] * com.typesafe:ssl-config-core_2.12:0.2.2 is selected over 0.2.1 [info] +- com.typesafe.play:play-ws-standalone_2.12:1.0.1 (depends on 0.2.2) [info] +- com.typesafe.akka:akka-stream_2.12:2.5.3 (depends on 0.2.1)
latest-wins
рд╢рдмреНрджрд╛рд░реНрде рдореЗрдВ, рдирд┐рд░реНрджрд┐рд╖реНрдЯ config:1.2.0
рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ "рдореБрдЭреЗ рд╕рдВрд╕реНрдХрд░рдг 1.2.0 рдпрд╛ рдЙрдЪреНрдЪрддрд░ рдХреЗ рд╕рд╛рде рдкреНрд░рджрд╛рди рдХрд░реЗрдВ"ред
рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ nearest-wins
рд░рдгрдиреАрддрд┐ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдмреЗрд╣рддрд░ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕рдВрдХреНрд░рдордгреАрдп рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдбрд╛рдЙрдирдЧреНрд░реЗрдб рдирд╣реАрдВ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, evicted
рдХреЙрд▓ рдХреЛ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рдВрдЪрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХрд┐рдП рдЧрдП рдереЗред
рд╢рдмреНрджрд╛рд░реНрде рдиреНрдпрд╛рдпрд╛рд▓рдп: рдирд╡реАрдирддрдо-рдЬреАрдд
рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рд╣рдо рд╢рдмреНрджрд╛рд░реНрде рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВ, рдореИрдВ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рджреВрдВрдЧрд╛ - рдХрд░реНрдЯрд╕реАрдпрд░ рдХрд╛ рдЙрдЪреНрдЪрд╛рд░рдг рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрд▓реЗрдХреНрд╕ рдЕрд░рд╢рд╛рдореНрдмреЛ рдХреЗ рдиреЛрдЯ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдпрд╣ рдЪрд┐рдХ-рд╕реА рдХрд╛ рдЙрдЪреНрдЪрд╛рд░рдг рд╣реИред
рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдХреЛрд░реНрдЯрд╕рд┐рдпрд░ рдХреЗ рджрд╕реНрддрд╛рд╡реЗрдЬ рдореЗрдВ рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рдПрдХ рдкреГрд╖реНрда рд╣реИ, рдЬреЛ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд╢рдмреНрджрд╛рд░реНрдереЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддрд╛ рд╣реИред
рджрд┐рдП рдЧрдП рдЕрдВрддрд░рд╛рд▓ рдХреЗ рдкреНрд░рддрд┐рдЪреНрдЫреЗрджрди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
- рдпрджрд┐ рдпрд╣ рдЦрд╛рд▓реА рд╣реИ (рдЕрдВрддрд░рд╛рд▓ рдЕрдВрддрд░рд╛рд▓ рдирд╣реАрдВ рд╣реИ), рддреЛ рдПрдХ рд╕рдВрдШрд░реНрд╖ рд╣реИред
- рдпрджрд┐ рдХреЛрдИ рдЕрдВрддрд░рд╛рд▓ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЪреМрд░рд╛рд╣реЗ (,) (рд╕рднреА рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рдЕрдиреБрд░реВрдк рдЕрдВрддрд░рд╛рд▓) рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдлрд┐рд░, рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
- рд╣рдо рдЕрдВрддрд░рд╛рд▓ рдХреА рд╕реАрдорд╛рдУрдВ рдХреЗ рдиреАрдЪреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВред
- рдпрджрд┐ рдЕрдВрддрд░рд╛рд▓ рдХреА рд╕реАрдорд╛рдУрдВ рдХреЗ рдКрдкрд░ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрд╕реНрдХрд░рдг рд╣реИрдВ, рддреЛ рдПрдХ рд╕рдВрдШрд░реНрд╖ рд╣реИред
- рдпрджрд┐ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрд╕реНрдХрд░рдг рдЕрдВрддрд░рд╛рд▓ рдХреА рд╕реАрдорд╛рдУрдВ рдХреЗ рднреАрддрд░ рд╣реИрдВ, рддреЛ рдкрд░рд┐рдгрд╛рдо рдЙрдирдореЗрдВ рд╕реЗ рдирд╡реАрдирддрдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
- рдпрджрд┐ рдЕрдВрддрд░рд╛рд▓ рд╕реАрдорд╛рдУрдВ рдХреЗ рднреАрддрд░ рдпрд╛ рдКрдкрд░ рдХреЛрдИ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрд╕реНрдХрд░рдг рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдкрд░рд┐рдгрд╛рдо рдПрдХ рдЕрдВрддрд░рд╛рд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдХреНрдпреЛрдВрдХрд┐ рдпрд╣
рдХрд╣рд╛
, рдЗрд╕рд▓рд┐рдП - рдпрд╣ latest-wins
рдХрд╛ рд╢рдмреНрджрд╛рд░реНрде рд╣реИред
рдЖрдк рдЗрд╕реЗ sbt 1.3.0-RC3
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ рдХреЛрд░реНрдЯрд┐рдпрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
ThisBuild / scalaVersion := "2.12.8" ThisBuild / organization := "com.example" ThisBuild / version := "1.0.0-SNAPSHOT" lazy val root = (project in file(".")) .settings( name := "foo", libraryDependencies += "com.typesafe.play" %% "play-ws-standalone" % "1.0.1", )
sbt 1.3.0-RC3
рдХрдВрд╕реЛрд▓ sbt 1.3.0-RC3
рд╕реЗ show externalDependencyClasspath
sbt 1.3.0-RC3
рдХреЛ рд╡рд╛рдкрд╕ com.typesafe:config:1.3.1
ред рд╕рдВрдШрд░реНрд╖ рд╕рдВрдХрд▓реНрдк рд░рд┐рдкреЛрд░реНрдЯ рдПрдХ рд╣реА рд░рд┐рдкреЛрд░реНрдЯ:
sbt:foo> evicted [info] Here are other dependency conflicts that were resolved: [info] * com.typesafe:config:1.3.1 is selected over 1.2.0 [info] +- com.typesafe.akka:akka-actor_2.12:2.5.3 (depends on 1.3.1) [info] +- com.typesafe:ssl-config-core_2.12:0.2.2 (depends on 1.2.0) [info] * com.typesafe:ssl-config-core_2.12:0.2.2 is selected over 0.2.1 [info] +- com.typesafe.play:play-ws-standalone_2.12:1.0.1 (depends on 0.2.2) [info] +- com.typesafe.akka:akka-stream_2.12:2.5.3 (depends on 0.2.1)
рдиреЛрдЯ: рдЕрдкрд╛рдЪреЗ рдЖрдЗрд╡реА nearest-wins
рдХреЗ рд╢рдмреНрджрд╛рд░реНрде рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рддрд╛ рд╣реИ?
рдЬрдм рдорд╛рд╡реЗрди рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ рдореЙрдбреНрдпреВрд▓ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рд╣рд▓ рдХрд░рддреЗ рд╣реБрдП, рдЖрдЗрд╡реА ivy.xml
рдлрд╝рд╛рдЗрд▓ рдХреЛ рдХрдирд╡рд░реНрдЯ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХреИрд╢ рдореЗрдВ ivy.xml
рдореЗрдВ force="true"
рд╡рд┐рд╢реЗрд╖рддрд╛ рдбрд╛рд▓рддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, cat ~/.ivy2/cache/com.typesafe.akka/akka-actor_2.12/ivy-2.5.3.xml
:
<dependencies> <dependency org="org.scala-lang" name="scala-library" rev="2.12.2" force="true" conf="compile->compile(*),master(compile);runtime->runtime(*)"/> <dependency org="com.typesafe" name="config" rev="1.3.1" force="true" conf="compile->compile(*),master(compile);runtime->runtime(*)"/> <dependency org="org.scala-lang.modules" name="scala-java8-compat_2.12" rev="0.8.0" force="true" conf="compile->compile(*),master(compile);runtime->runtime(*)"/> </dependencies>
рдЖрдЗрд╡реА рдкреНрд░рд▓реЗрдЦрди рдХрд╣рддрд╛ рд╣реИ:
рдпреЗ рджреЛ latest
рд╕рдВрдШрд░реНрд╖ рдкреНрд░рдмрдВрдзрдХ force
рдирд┐рд░реНрднрд░рддрд╛ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реИрдВред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдкреНрд░рддреНрдпрдХреНрд╖ рдирд┐рд░реНрднрд░рддрд╛ рдПрдХ force
рд╡рд┐рд╢реЗрд╖рддрд╛ (рдирд┐рд░реНрднрд░рддрд╛ рджреЗрдЦреЗрдВ) рдХреА рдШреЛрд╖рдгрд╛ рдХрд░ рд╕рдХрддреА рд╣реИ, рдпрд╣ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпрдХреНрд╖ рдирд┐рд░реНрднрд░рддрд╛ рдФрд░ рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рд╕рдВрд╢реЛрдзрдиреЛрдВ рдХреЗ рдХрд╛рд░рдг, рдкреНрд░рддреНрдпрдХреНрд╖ рдирд┐рд░реНрднрд░рддрд╛ рд╕рдВрд╢реЛрдзрдиреЛрдВ рдХреЛ рд╡рд░реАрдпрддрд╛ рджреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред
рдореЗрд░реЗ рд▓рд┐рдП, рдЗрд╕ рд╕реВрддреНрд░реАрдХрд░рдг рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ latest-wins
рддрд░реНрдХ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдФрд░ nearest-wins
рд╢рдмреНрджрд╛рд░реНрдереЛрдВ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП force="true"
рдХрд▓реНрдкрдирд╛ рдХреА рдЧрдИ рдереАред рд▓реЗрдХрд┐рди, рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдРрд╕рд╛ рд╣реЛрдирд╛ рддрдп рдирд╣реАрдВ рдерд╛, рдФрд░ рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ latest-wins
: рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, sbt 1.2.8
com.typesafe:config:1.3.1
рдХреЛ com.typesafe:config:1.3.1
ред
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХреЛрдИ рдПрдХ рд╕рдЦреНрдд рд╕рдВрдШрд░реНрд╖ рдкреНрд░рдмрдВрдзрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп force="true"
рдХреЗ рдкреНрд░рднрд╛рд╡ force="true"
рдХрд╛ рдкрд╛рд▓рди рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдЯреВрдЯрдиреЗ рд▓рдЧрддрд╛ рд╣реИред
ThisBuild / conflictManager := ConflictManager.strict
рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдПрдХ рд╕рдЦреНрдд рд╕рдВрдШрд░реНрд╖ рдкреНрд░рдмрдВрдзрдХ рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИред show externalDependencyClasspath
com.typesafe:config:1.3.1
рдЦрд╝реБрд╢реА рд╕реЗ рд▓реМрдЯрддрд╛ рд╣реИред com.typesafe:config:1.3.1
ред
рдПрдХ рд╕рдВрдмрдВрдзрд┐рдд рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ com.typesafe:config:1.3.1
рдХрд╛ рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рдЬреЛрдбрд╝рдирд╛, рдЬреЛ рдХрд┐ рдПрдХ рд╕рдЦреНрдд рд╕рдВрдШрд░реНрд╖ рдкреНрд░рдмрдВрдзрдХ рдЧреНрд░рд╛рдл рдореЗрдВ рдбрд╛рд▓рддрд╛ рд╣реИ, рдПрдХ рддреНрд░реБрдЯрд┐ рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИред
ThisBuild / scalaVersion := "2.12.8" ThisBuild / organization := "com.example" ThisBuild / version := "1.0.0-SNAPSHOT" ThisBuild / conflictManager := ConflictManager.strict lazy val root = (project in file(".")) .settings( name := "foo", libraryDependencies ++= List( "com.typesafe.play" %% "play-ws-standalone" % "1.0.1", "com.typesafe" % "config" % "1.3.1", ) )
рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
sbt:foo> show externalDependencyClasspath [info] Updating ... [error] com.typesafe#config;1.2.0 (needed by [com.typesafe#ssl-config-core_2.12;0.2.2]) conflicts with com.typesafe#config;1.3.1 (needed by [com.example#foo_2.12;1.0.0-SNAPSHOT]) [error] org.apache.ivy.plugins.conflict.StrictConflictException: com.typesafe#config;1.2.0 (needed by [com.typesafe#ssl-config-core_2.12;0.2.2]) conflicts with com.typesafe#config;1.3.1 (needed by [com.example#foo_2.12;1.0.0-SNAPSHOT])
рд╡рд░реНрдЬрдирд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
рд╣рдордиреЗ latest-wins
рд╢рдмреНрджрд╛рд░реНрдереЛрдВ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рдпрд╣ рд╕реБрдЭрд╛рд╡ рджреЗрддреЗ рд╣реБрдП рдХрд┐ рдХрд┐рд╕реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреНрд░рдо рдореЗрдВ рд╕рдВрд╕реНрдХрд░рдг рдХреБрдЫ рдХреНрд░рдо рдореЗрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред
рдЗрд╕рд▓рд┐рдП, рд╡рд░реНрдЬрдирд┐рдВрдЧ рд╢рдмреНрджрд╛рд░реНрде рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред
рдЕрдкрд╛рдЪреЗ рдЖрдЗрд╡реА рдореЗрдВ рд╡рд░реНрдЬрдирд┐рдВрдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛
рдЗрд╕ Javadoc рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рддреБрд▓рдирд┐рддреНрд░ рдмрдирд╛рддреЗ рд╕рдордп, рдЖрдЗрд╡реА рдиреЗ PHP рд╕реЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░реНрдп рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд┐рдпрд╛:
рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдкрд╣рд▓реЗ рдПрдХ рдмрд┐рдВрджреБ рдХреЗ рд╕рд╛рде _, - рдФрд░ + рдмрджрд▓рддрд╛ рд╣реИ .
рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдореЗрдВ рдФрд░ рднреА рдЬреЛрдбрд╝рддрд╛ рд╣реИ .
рдкрд╣рд▓реЗ рдФрд░ рдмрд╛рдж рдореЗрдВ рд╕рдм рдХреБрдЫ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, '4.3.2RC1' '4.3.2.RC.1' рдмрди рдЬрд╛рддрд╛ рд╣реИред рд╡рд╣ рдлрд┐рд░ рдмрд╛рдПрдВ рд╕реЗ рджрд╛рдПрдВ рдкреНрд░рд╛рдкреНрдд рднрд╛рдЧреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рддреА рд╣реИред
рд╡рд┐рд╢реЗрд╖ рддрддреНрд╡реЛрдВ рд╡рд╛рд▓реЗ рднрд╛рдЧреЛрдВ ( dev
, alpha
рдпрд╛ a
, beta
рдпрд╛ b
, RC
рдпрд╛ RC
, #
, pl
рдпрд╛ p
) * рдХреЗ рд▓рд┐рдП, рддрддреНрд╡реЛрдВ рдХреА рддреБрд▓рдирд╛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреНрд░рдо рдореЗрдВ рдХреА рдЬрд╛рддреА рд╣реИ:
рдХреЛрдИ рднреА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЬреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рддрддреНрд╡ рдирд╣реАрдВ рд╣реИ <dev <Alpha = a <beta = b <RC = rc <# <pl = pред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рди рдХреЗрд╡рд▓ рд╡рд┐рднрд┐рдиреНрди рд╕реНрддрд░реЛрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, '4.1' рдФрд░ '4.1.2') рдХреА рддреБрд▓рдирд╛ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ, рдмрд▓реНрдХрд┐ PHP- рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рд╡рд┐рдХрд╛рд╕ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрддреА рд╣реИред
* рд▓рдЧрднрдЧред рдЯреНрд░рд╛рдВрд╕ред
рд╣рдо рдЬрд╛рдВрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд▓рд┐рдЦрдХрд░ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рдХреИрд╕реЗ рдСрд░реНрдбрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
scala> :paste
рдХреМрд░рд╕рд┐рдпрд░ рдореЗрдВ рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛
рдирд┐рд░реНрднрд░рддрд╛ рд╕рдВрдХрд▓реНрдк рд╢рдмреНрджрд╛рд░реНрде рдкрд░ GitHub рдкреГрд╖реНрда рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рдПрдХ рдЦрдВрдб рд╣реИред
рдХреЛрд░реНрдЯрд┐рдпрд░ рдорд╛рд╡реЗрди рдХреЗ рдЕрдиреБрд░реВрдк рд╕рдВрд╕реНрдХрд░рдг рдХреНрд░рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рддреБрд▓рдирд╛ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрддреНрд╡реЛрдВ рдореЗрдВ рдЯреВрдЯ рдЧрдП рд╣реИрдВ ...
рдРрд╕реЗ рддрддреНрд╡реЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд░реНрдгреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред, -, рдФрд░ _ (рдФрд░ рд╡рд┐рднрд╛рдЬрдХ рд╕реНрд╡рдпрдВ рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ), рдФрд░ рдЕрдХреНрд╖рд░-рд╕реЗ-рд╕рдВрдЦреНрдпрд╛ рдпрд╛ рд╕рдВрдЦреНрдпрд╛-рджрд░-рдЕрдХреНрд╖рд░ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рджреНрд╡рд╛рд░рд╛ред
рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рд░реНрднрд░рддрд╛ libraryDependencies += "io.get-coursier" %% "coursier-core" % "2.0.0-RC2-6"
рд╕рд╛рде рдПрдХ libraryDependencies += "io.get-coursier" %% "coursier-core" % "2.0.0-RC2-6"
рдмрдирд╛рдПрдБ рдирд┐рд░реНрднрд░рддрд╛рдПрдБ libraryDependencies += "io.get-coursier" %% "coursier-core" % "2.0.0-RC2-6"
рдФрд░ console
рдЪрд▓рд╛рдПрдБ:
sbt:foo> helper/console [info] Starting scala interpreter... Welcome to Scala 2.12.8 (OpenJDK 64-Bit Server VM, Java 1.8.0_212). Type in expressions for evaluation. Or try :help. scala> import coursier.core.Version import coursier.core.Version scala> def sortVersionsCoursier(versions: String*): List[String] = | versions.toList.map(Version.apply).sorted.map(_.repr) sortVersionsCoursier: (versions: String*)List[String] scala> sortVersionsCoursier("1.0", "2.0", "1.0-alpha", "1.0+alpha", "1.0-X1", "1.0a", "2.0.2") res0: List[String] = List(1.0-alpha, 1.0, 1.0-X1, 1.0+alpha, 1.0a, 2.0, 2.0.2)
рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ, рдХрд░реНрдЯрд╕реАрдпрд░ рдЖрдИрд╡реА рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдХреНрд░рдо рдореЗрдВ рд╕рдВрд╕реНрдХрд░рдг рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХрд╛ рдЖрджреЗрд╢ рджреЗрддрд╛ рд╣реИред
рдпрджрд┐ рдЖрдкрдиреЗ рдЕрдиреБрдореЗрдп рд╡рд░реНрдгрдирд╛рддреНрдордХ рдЯреИрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЖрджреЗрд╢ рдХреБрдЫ рднреНрд░рдо рдкреИрджрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рд╕рдВрд╕реНрдХрд░рдг рд░реЗрдВрдЬ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
рдЖрдорддреМрд░ рдкрд░, рдореИрдВ рд╕рдВрд╕реНрдХрд░рдг рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдмрдЪрддрд╛ рд╣реВрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡реЗ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рд╡реЗрдмрд░ рдФрд░ рдПрдирд╡реАрдкреА рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдЬреЛ рдорд╛рд╡реЗрди рд╕реЗрдВрдЯреНрд░рд▓ рдкрд░ рдкреБрдирд░реНрдкреНрд░рдХрд╛рд╢рд┐рдд рд╣реИрдВред рдореЙрдбреНрдпреВрд▓ рдореЗрдВ "is-number": "^4.0.0"
рдХреБрдЫ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ "is-number": "^4.0.0"
рдЬреЛ рдХрд┐ [4.0.0,5)
рдЕрдиреБрд░реВрдк рд╣реЛрдЧрд╛ред
Apache Ivy рдореЗрдВ рд╡рд░реНрдЬрди рд░реЗрдВрдЬ рд╣реИрдВрдбрд▓рд┐рдВрдЧ
рдЗрд╕ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдореЗрдВ, angular-boostrap:0.14.2
angular:[1.3.0,)
рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ angular:[1.3.0,)
ред
ThisBuild / scalaVersion := "2.12.8" ThisBuild / organization := "com.example" ThisBuild / version := "1.0.0-SNAPSHOT" lazy val root = (project in file(".")) .settings( name := "foo", libraryDependencies ++= List( "org.webjars.bower" % "angular" % "1.4.7", "org.webjars.bower" % "angular-bootstrap" % "0.14.2", ) )
sbt 1.2.8
show externalDependencyClasspath
sbt 1.2.8
рдХреЛ sbt 1.2.8
рдореЗрдВ angular-bootstrap:0.14.2
рдФрд░ angular:1.7.8
angular-bootstrap:0.14.2
ред рдФрд░ 1.7.8
рдХрд╣рд╛рдВ рдЧрдП? рдЬрдм рдЖрдЗрд╡реА рдХрдИ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдкрд╛рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рдЦреЛрдЬ рд╕рдХрддрд╛ рд╣реИ, рдХрднреА-рдХрднреА рд╕реНрдХреНрд░реАрдирдХреНрд░реИрдкрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рднреА рдХрд░рддрд╛ рд╣реИред
рд╕рдВрд╕реНрдХрд░рдг рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдХрд╛ рдпрд╣ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдЕрд╕реЗрдВрдмрд▓реА рдХреЛ рдЧреИрд░-рджреЛрд╣рд░рд╛рд╡ рдмрдирд╛рддрд╛ рд╣реИ (рд╣рд░ рдХреБрдЫ рдорд╣реАрдиреЛрдВ рдореЗрдВ рдПрдХ рд╣реА рдЕрд╕реЗрдВрдмрд▓реА рдЪрд▓рд╛рдиреЗ рд╕реЗ рдЖрдкрдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓рддреЗ рд╣реИрдВ)ред
рдХреМрд░рд╕рд┐рдпрд░ рдореЗрдВ рд╣реИрдВрдбрд▓рд┐рдВрдЧ рд╡рд░реНрдЬрди рд░реЗрдВрдЬ
рдЬреАрдердм рдкреГрд╖реНрда рдкрд░ рдХрд░реНрдЯрд╕реАрдпрд░ рдирд┐рд░реНрднрд░рддрд╛ рд╕рдВрдХрд▓реНрдк рдЕрдиреБрднрд╛рдЧ
рдпрд╣ рдкрдврд╝рддрд╛ рд╣реИ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
рдЕрдВрддрд░рд╛рд▓ рдкрд░ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрд╕реНрдХрд░рдг рдкрд╕рдВрдж рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ
рдпрджрд┐ рдЖрдкрдХреЗ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ [1.0,2.0) рдФрд░ 1.4 рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рд╣реИ, рддреЛ рд╕рдВрд╕реНрдХрд░рдг рдЕрдиреБрдореЛрджрди 1.4 рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЕрдЧрд░ 1.4 рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╕рдВрд╕реНрдХрд░рдг [1.0,2.0] рд░реЗрдВрдЬ рдореЗрдВ рдкрд╕рдВрдж рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдпрд╣ рдЖрд╢рд╛рдЬрдирдХ рд▓рдЧ рд░рд╣рд╛ рд╣реИред
sbt:foo> show externalDependencyClasspath [warn] There may be incompatibilities among your library dependencies; run 'evicted' to see detailed eviction warnings. [info] * Attributed(/Users/eed3si9n/.sbt/boot/scala-2.12.8/lib/scala-library.jar) [info] * Attributed(/Users/eed3si9n/.coursier/cache/v1/https/repo1.maven.org/maven2/org/webjars/bower/angular/1.4.7/angular-1.4.7.jar) [info] * Attributed(/Users/eed3si9n/.coursier/cache/v1/https/repo1.maven.org/maven2/org/webjars/bower/angular-bootstrap/0.14.2/angular-bootstrap-0.14.2.jar)
angular-bootstrap:0.14.2
рд╕рд╛рде рдПрдХ рд╣реА рдЕрд╕реЗрдВрдмрд▓реА рдкрд░ show externalDependencyClasspath
angular-bootstrap:0.14.2
рд░рд┐рдЯрд░реНрди angular-bootstrap:0.14.2
рдФрд░ angular:1.4.7
рдЙрдореНрдореАрдж рдХреЗ angular-bootstrap:0.14.2
ред рдпрд╣ рдЖрдЗрд╡реА рдкрд░ рдПрдХ рд╕реБрдзрд╛рд░ рд╣реИред
рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдорд╛рдорд▓реЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдЬрдм рдХрдИ рдЕрд╕рдВрддреБрд╖реНрдЯ рд╕рдВрд╕реНрдХрд░рдг рд░реЗрдВрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
ThisBuild / scalaVersion := "2.12.8" ThisBuild / organization := "com.example" ThisBuild / version := "1.0.0-SNAPSHOT" lazy val root = (project in file(".")) .settings( name := "foo", libraryDependencies ++= List( "org.webjars.npm" % "randomatic" % "1.1.7", "org.webjars.npm" % "is-odd" % "2.0.0", ) )
sbt 1.3.0-RC3
рдореЗрдВ sbt 1.3.0-RC3
рдореЗрдВ sbt 1.3.0-RC3
show externalDependencyClasspath
рдХреЛ рдирд┐рдореНрди рддреНрд░реБрдЯрд┐ sbt 1.3.0-RC3
:
sbt:foo> show externalDependencyClasspath [info] Updating https://repo1.maven.org/maven2/org/webjars/npm/kind-of/maven-metadata.xml No new update since 2018-03-10 06:32:27 https://repo1.maven.org/maven2/org/webjars/npm/is-number/maven-metadata.xml No new update since 2018-03-09 15:25:26 https://repo1.maven.org/maven2/org/webjars/npm/is-buffer/maven-metadata.xml No new update since 2018-08-17 14:21:46 [info] Resolved dependencies [error] lmcoursier.internal.shaded.coursier.error.ResolutionError$ConflictingDependencies: Conflicting dependencies: [error] org.webjars.npm:is-number:[3.0.0,4):default(compile) [error] org.webjars.npm:is-number:[4.0.0,5):default(compile) [error] at lmcoursier.internal.shaded.coursier.Resolve$.validate(Resolve.scala:394) [error] at lmcoursier.internal.shaded.coursier.Resolve.validate0$1(Resolve.scala:140) [error] at lmcoursier.internal.shaded.coursier.Resolve.$anonfun$ioWithConflicts0$4(Resolve.scala:184) [error] at lmcoursier.internal.shaded.coursier.util.Task$.$anonfun$flatMap$2(Task.scala:14) [error] at scala.concurrent.Future.$anonfun$flatMap$1(Future.scala:307) [error] at scala.concurrent.impl.Promise.$anonfun$transformWith$1(Promise.scala:41) [error] at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:64) [error] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [error] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [error] at java.lang.Thread.run(Thread.java:748) [error] (update) lmcoursier.internal.shaded.coursier.error.ResolutionError$ConflictingDependencies: Conflicting dependencies: [error] org.webjars.npm:is-number:[3.0.0,4):default(compile) [error] org.webjars.npm:is-number:[4.0.0,5):default(compile)
рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ, рдпрд╣ рд╕рд╣реА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпреЗ рд╢реНрд░реЗрдгрд┐рдпрд╛рдВ рдУрд╡рд░рд▓реИрдк рдирд╣реАрдВ рд╣реЛрддреА рд╣реИрдВред рдЬрдмрдХрд┐ sbt 1.2.8
рдЗрд╕ is-number:4.0.0
sbt 1.2.8
рд╣рд▓ рдХрд░рддрд╛ is-number:4.0.0
ред
рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рд╕рдВрд╕реНрдХрд░рдг рд╢реНрд░реЗрдгрд┐рдпрд╛рдВ рдХрд╛рдлреА рдХрд╖реНрдЯрдкреНрд░рдж рд╣реИрдВ, рдореИрдВ рдЕрддрд┐рд░рд┐рдХреНрдд latest-wins
рд╢рдмреНрджрд╛рд░реНрде рдирд┐рдпрдореЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреМрд░рд┐рдпрд░ рдХреЛ рдПрдХ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реВрдВ рдЬреЛ рдЖрдкрдХреЛ рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдХреЗ рдирд┐рдЪрд▓реЗ рд╕реАрдорд╛ рд╕реЗ рдмрд╛рдж рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рджреЗрдЦреЗрдВ рдкреНрд░рд╛рдВрдЧрдг / coursier # 1284
рдирд┐рд╖реНрдХрд░реНрд╖
рд░рд┐рдЬрд╝реЙрд▓реНрд╡рд░ рд╢рдмреНрджрд╛рд░реНрде рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдкрд░рд┐рднрд╛рд╖рд┐рдд рдмрд╛рдзрд╛рдУрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреНрд▓рд╛рд╕рдкреИрде рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред
рдЖрдорддреМрд░ рдкрд░, рд╡рд┐рд╡рд░рдгреЛрдВ рдореЗрдВ рдЕрдВрддрд░ рд╕рдВрд╕реНрдХрд░рдг рд╕рдВрдШрд░реНрд╖реЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рд╕реЗ рдкреНрд░рдХрдЯ рд╣реЛрддрд╛ рд╣реИред
- рдорд╛рд╡реЗрди
nearest-wins
рд░рдгрдиреАрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рд╕рдХрд░реНрдордХ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдХрдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред - рдЖрдЗрд╡реА
latest-wins
рд░рдгрдиреАрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред - рдХреЛрд░реНрдЯрд┐рдпрд░ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ
latest-wins
рд░рдгрдиреАрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рдЕрдзрд┐рдХ рд╕рдЦреНрддреА рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИред - рдЖрдЗрд╡реА рд╕рдВрд╕реНрдХрд░рдг рд░реЗрдВрдЬ рд╣реИрдВрдбрд▓рд░ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рд╕рдорд╛рди рдмрд┐рд▓реНрдб рдХреЛ рдЧреИрд░-рджреЛрд╣рд░рд╛рдиреЗ рдпреЛрдЧреНрдп рдмрдирд╛рддрд╛ рд╣реИред
- рдХреМрд░рд╕рд┐рдпрд░ рдФрд░ рдЖрдЗрд╡реА рдмрд╣реБрдд рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рд╕реЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд╛ рдЖрдпреЛрдЬрди рдХрд░рддреЗ рд╣реИрдВред
26 рдирд╡рдВрдмрд░ рдХреЛ рдореЙрд╕реНрдХреЛ рдореЗрдВ рд╕реНрдХрд╛рд▓рд╛ рдЗрдХреЛрд╕рд┐рд╕реНрдЯрдо рдХреА рд╕реНрдХрд╛рд▓рд╛ рдЗрдХреЛрд╕рд┐рд╕реНрдЯрдо рдХреА рдРрд╕реА рд╕реВрдХреНрд╖реНрдорддрд╛ рдкрд░ рднреА рдЪрд░реНрдЪрд╛ рдирд╣реАрдВ рдХреА рдЬрд╛рдПрдЧреА ред Artem Seleznev JDBC рдХреЗ рдмрд┐рдирд╛ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдЕрднреНрдпрд╛рд╕ рд╢реБрд░реВ рдХрд░реЗрдЧрд╛ред Wojtek Pitula рдПрдХреАрдХрд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ рдФрд░ рдмрддрд╛рдПрдВрдЧреЗ рдХрд┐ рдХреИрд╕реЗ рдЙрдиреНрд╣реЛрдВрдиреЗ рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдпрд╛ рдЬрд┐рд╕рдореЗрдВ рдЙрдиреНрд╣реЛрдВрдиреЗ рд╕рднреА рдХрд╛рдордХрд╛рдЬреА рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рд░рдЦрд╛ред рдФрд░ рддрдХрдиреАрдХреА рдХрдЯреНрдЯрд░ рд╕реЗ рднрд░реА 16 рдФрд░ рд░рд┐рдкреЛрд░реНрдЯ рд╕рдореНрдореЗрд▓рди рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХреА рдЬрд╛рдПрдВрдЧреАред