рдЬрдм рдЖрдкрдХреЗ рдЙрддреНрдкрд╛рдж рдХреЗ рдЕрдВрддрд┐рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╣реЛрддреЗ рд╣реИрдВ, рдЬреЛ рди рдХреЗрд╡рд▓ рдЖрдкрдХреЛ рдЗрд╕реЗ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреА рдкреЗрд╢рдХрд╢ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрддреЗ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рд╣рд░ рд╕рдВрднрд╡ рддрд░реАрдХреЗ рд╕реЗ рдЗрд╕рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдореЗрдВ рднрд╛рдЧ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдЙрддреНрд╕реБрдХ рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдпрд╣ рд╕реЛрдЪрдиреЗ рд▓рдЧрддреЗ рд╣реИрдВ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдЕрд╡рд╕рд░ рдХреИрд╕реЗ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рдПред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЖрдк рдкреВрд░реНрдг рд╕реНрд╡рддрдВрддреНрд░рддрд╛ рдирд╣реАрдВ рджреЗрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рд╕рд╛рде рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рддрдХ рдкрд╣реБрдВрдЪред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рдмрджрд▓рдиреЗ, рд╕рдВрдХрд▓рди рдХрд░рдиреЗ рдФрд░ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдлрд┐рд░ рд╕реЗ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдХреИрд╕реЗ рджреЗрдВ?
рдкреНрд░рд╛рдЧрд┐рддрд┐рд╣рд╛рд╕
рд╣рдо рдХрдВрдкрдиреА рдХреА рд╡рд┐рднрд┐рдиреНрди рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкрд░реАрдХреНрд╖рдг рдФрд░ рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдгрд╛рд▓реА рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рдСрдЯреЛрдореЗрд╢рди рдЗрдВрдЬреАрдирд┐рдпрд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд рдЯреЗрд╕реНрдЯ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдкреВрд░реНрдг рд╡рд┐рдХрд╕рд┐рдд рдХрд╛рд░реНрдпрдХреНрд░рдо рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдЕрдкрдирд╛ рдЬреАрд╡рди рдЪрдХреНрд░ рд╣реИред рдЙрдирдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдШрдЯрдирд╛рдУрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣рдорд╛рд░реЗ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░, рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдирд┐рдЧрд░рд╛рдиреА рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрддреА рд╣реИ), рддреЛ рд╕рд┐рд╕реНрдЯрдо рд╕рднреА рдЗрдЪреНрдЫреБрдХ рдкрд╛рд░реНрдЯрд┐рдпреЛрдВ рдХреЛ рдЕрд▓рд░реНрдЯ рдХрд░рддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдкрд░реАрдХреНрд╖рдХ рд░рдЪрдирд╛рддреНрдордХ рд▓реЛрдЧ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЕрдХреНрд╕рд░ рдЕрдзрд┐рд╕реВрдЪрдирд╛ (рдореЗрд▓ рдФрд░ рдПрд╕рдПрдордПрд╕) рдХреЗ рдорд╛рдирдХ рддрд░реАрдХреЗ рдЙрдирдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдореИрдВ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдкрддрд╛ рдЪрд▓рдиреЗ рдкрд░ рдХрд┐рдП рдЧрдП рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд▓рд╛рд▓ рдЯреНрд░реИрдлрд╝рд┐рдХ рд▓рд╛рдЗрдЯ рдХреЛ рд▓рд╛рдЗрдЯ рдХрд░реЗрдВ рдпрд╛ рд╕рд╛рдпрд░рди рдЪрд╛рд▓реВ рдХрд░реЗрдВред
рд╕реВрдЪрдирд╛рдПрдВ рдХрд┐рд╕реА рдЙрддреНрдкрд╛рдж рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХрд╛ рд╕рд┐рд░реНрдл рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВред рд╣рдорд╛рд░реЗ рдХрд╛рдо рдореЗрдВ рдХрд╛рдлреА рдХреБрдЫ рдРрд╕реЗ рдХрд╛рд░реНрдп рд╣реИрдВред рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ, рд╣рдордиреЗ рдЙрди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛, рдЬреЛ рд╣рдорд╛рд░реЗ рд╡рд╛рд╣рди рдЪрд╛рд▓рдХреЛрдВ рдХреЛ рд╕рд┐рд╕реНрдЯрдо рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛ рдЗрд╕рдореЗрдВ рдХреБрдЫ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╡рд┐рдХрд▓реНрдк
рдпреЛрдЬрдирд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХрдИ рд╡рд┐рдХрд▓реНрдк рджрд┐рдорд╛рдЧ рдореЗрдВ рдЖрддреЗ рд╣реИрдВред
- рд╕рд┐рд╕реНрдЯрдо рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЖрдо рд╡рд┐рдХрд▓реНрдк рдПрдкреАрдЖрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрд╛рддрдЪреАрдд рд╣реИред рдЬреНрдпрд╛рджрд╛рддрд░ рдпрд╣ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдмрд╛рд╣рд░реА рдкреНрд░рднрд╛рд╡ рдХрд╛ рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реЛрдк, рд░реАрд╕реНрдЯ рдПрдкреАрдЖрдИ, рдЖрджрд┐ред рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдмрд▓реНрдХрд┐ рд╕реАрдорд┐рдд рд╣реИ рдФрд░ рдЕрдХреНрд╕рд░ рд╕рд┐рд╕реНрдЯрдо рдХреА рдЖрдВрддрд░рд┐рдХ рдШрдЯрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рдордп рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред
- рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓, рд▓реЗрдХрд┐рди рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк рдЖрдВрддрд░рд┐рдХ рдПрдкреАрдЖрдИ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдХрд░реНрдиреЗрд▓ рдореЗрдВ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрджрд┐ рдкрд╣рд▓реЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЖрдзреБрдирд┐рдХ рд╕реЗрд╡рд╛рдПрдВ рд╣реИрдВ, рддреЛ рджреВрд╕рд░рд╛ рдЕрдХреНрд╕рд░ рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рддрдВрддреНрд░ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реВрдЪрдирд╛рдУрдВ рдпрд╛ рдкреБрд╢реЛрдВ рдХреЛ рдкреБрд╢) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рд╣рдореЗрд╢рд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдФрд░ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдореИрдВ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп рджреГрд╖реНрдЯрд┐рдХреЛрдг рднреА рдЦреЛрдЬрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдЬрдмрдХрд┐ рд╣реБрдХ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рдВрдХреАрд░реНрдг рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреЗ рд╣реИрдВред
- рд╕рд┐рд╕реНрдЯрдо рдХреЛ "рдЕрдВрджрд░ рд╕реЗ" рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЕрдиреНрдп рддрд░реАрдХрд╛ рдкреНрд▓рдЧрдЗрдиреНрд╕ (рдкреНрд▓рдЧ-рдЗрди) рдХрд╛ рддрдВрддреНрд░ рд╣реИред рдпрд╣ рдЖрдкрдХреЛ рд╕рд┐рд╕реНрдЯрдо рд╕реЗ рд╕реАрдзреЗ рдХрд╛рд░реНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдЕрдВрджрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдХрдИ рдкреНрд░рд╕рд┐рджреНрдз рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдЦреБрдж рдХреЛ рд╕рд╛рдмрд┐рдд рдХрд░ рдЪреБрдХрд╛ рд╣реИред рдЬрдм рд╣рдо рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдореБрдЦреНрдп рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддрдВрддреНрд░ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЬрд░реВрд░рдд рдереА, рддреЛ рд╣рдо рдЙрд╕рдХреЗ рдкрд╛рд╕ рдЖрдПред
рд╣рдорд╛рд░рд╛ рд╕рд┐рд╕реНрдЯрдо рдкреВрд░реА рддрд░рд╣ рдЬрд╛рд╡рд╛ рдкрд░ рдмрдирд╛ рд╣реБрдЖ рд╣реИред рдЗрд╕ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкрд░ рдмрдирд╛рдП рдЧрдП рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдХрдИ рдмреЗрд╣рддрд░реАрди рдЙрджрд╛рд╣рд░рдг рд╣реИрдВред рдЬрд╛рд╡рд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рдЪреАрд▓реА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдкреНрд░рд╕рд┐рджреНрдз рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ
рдУрдПрд╕рдЬреАрдЖрдИ рд╣реИ ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрдЯрд┐рд▓рддрд╛ рдкреИрджрд╛ рдХрд░рддрд╛ рд╣реИ, рдХрдИ рд╕реАрдорд╛рдПрдВ рд▓рдЧрд╛рддрд╛ рд╣реИ, рдФрд░ рдЕрдХреНрд╕рд░ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреА рдПрдХ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдо рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдмрдирд╛рдиреЗ рдФрд░ рдЬрд╛рд░реА рдХрд░рдиреЗ, рдСрдЯреЛ-рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ, рд░рд┐рдкреЛрд░реНрдЯ рдмрдирд╛рдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рджреВрд░рд╕реНрде рднрдВрдбрд╛рд░рдг, рдЖрджрд┐ рдкрд░ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рд╡реЗрди рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХрд╛ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдорд╛рд╡реЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд▓рдЧ-рдЗрди рд╕рд┐рд╕реНрдЯрдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ред рдорд╛рд╡реЗрди рдЖрдкрдХреЛ рдкреНрд▓рдЧрдЗрди рдХреЗ рд╕рдВрдХрд▓рд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рд░реВрдкрдг рд╕рд╛рдХреНрд╖реНрдп рдПрдХрддреНрд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕реЗ рджреВрд░рд╕реНрде рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рднреА рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рд╕реЗ рдпрд╣ рдбрд╛рдЙрдирд▓реЛрдб рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛ред рдпрд╣ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ рдЬрдм рдкреНрд▓рдЧ-рдЗрди рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ рдЬреЛ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдЕрдкрдиреЗ рдХрд╛рдо рдореЗрдВ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
рд╢рдмреНрджреЛрдВ рд╕реЗ рдХрд░реНрдореЛрдВ рддрдХ
рд╣рдореЗрдВ 2 рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: рдкрд╣рд▓рд╛ рдЬрд┐рд╕рдореЗрдВ рд╣рдорд╛рд░реЗ рдкреНрд▓рдЧ-рдЗрди (рдкреНрд▓рдЧрд┐рди рдПрдкреАрдЖрдИ) рдХрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИ, рдФрд░ рджреВрд╕рд░рд╛ рдЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рдпреБрдХреНрдд рд╣реИред рдЖрдЗрдП рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рд╕рд░рд▓ рдорд╛рд╡реЗрди рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдирд╛рдПрдВ:
mvn archetype:generate -DarchetypeGroupId=org.apache.maven.archetypes -DgroupId=com.my.plugin -DartifactId=plugin-api
рдЕрдм рдПрдХ рдПрдХрд▓ рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рде рд╕рдмрд╕реЗ рд╕рд░рд▓ рдкреНрд▓рдЧрдЗрди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЬреЛрдбрд╝реЗрдВ рдЬреЛ 2 рдкреВрд░реНрдгрд╛рдВрдХ рддрд░реНрдХ рджреЗрддрд╛ рд╣реИ рдФрд░ рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рд▓реМрдЯрд╛рддрд╛ рд╣реИ:
рдЫрд┐рдкрд╛ рд╣реБрдЖ рдкрд╛рда package com.my.plugin; public interface Plugin { public Integer perform(Integer param1, Integer param2); }
рдЖрдкрдХреЛ рдмрдирд╛рдИ рдЧрдИ рдХрд▓рд╛рдХреГрддрд┐ рдХреЛ рдХреБрдЫ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рдо рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рд╕реНрдерд╛рдиреАрдп рднрдВрдбрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ:
mvn clean install
рдЕрдм рдЖрдЗрдП рдирд┐рд░реНрдорд┐рдд рдПрдкреАрдЖрдИ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╢реБрд░реВ рдХрд░реЗрдВ:
mvn archetype:generate -DarchetypeGroupId=org.apache.maven.archetypes -DgroupId=com.my.plugin -DartifactId=sum-plugin
рд╣рдореЗрдВ рдЕрдкрдиреЗ рдПрдкреАрдЖрдИ рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ:
рдЫрд┐рдкрд╛ рд╣реБрдЖ рдкрд╛рда <dependency> <groupId>com.my.plugin</groupId> <artifactId>plugin-api</artifactId> <version>1.0-SNAPSHOT</version> </dependency>
рдФрд░ рддрджрдиреБрд╕рд╛рд░, рдкреНрд▓рдЧрдЗрди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди:
рдЫрд┐рдкрд╛ рд╣реБрдЖ рдкрд╛рда package com.my.plugin.impl; public class SumPlugin implements Plugin { @Override public Integer perform(Integer param1, Integer param2){ return param1 + param2; } }
рдПрдХ рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рдФрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╣реИрдВ:
mvn archetype:generate -DarchetypeGroupId=org.apache.maven.archetypes -DgroupId=com.my.plugin -DartifactId=app
рд╣рдореЗрдВ рдЧреНрд░рд╣рдг рдПрдерд░ рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рджрд░реНрдЬ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд╣рд▓реЗ pom.xml рдореЗрдВ рдХреБрдЫ рдЧреБрдг рдЬреЛрдбрд╝реЗрдВ:
рдЫрд┐рдкрд╛ рд╣реБрдЖ рдкрд╛рда <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.compiler.version>1.6</project.compiler.version> <aetherVersion>0.9.0.M2</aetherVersion> <mavenVersion>3.1.0</mavenVersion> <wagonVersion>1.0</wagonVersion> </properties>
рдЕрдм рдЦреБрдж рдирд┐рд░реНрднрд░рддрд╛рдПрдБ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
рдЫрд┐рдкрд╛ рд╣реБрдЖ рдкрд╛рда <dependency> <groupId>com.my.plugin</groupId> <artifactId>plugin-api</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <dependency> <groupId>commons-collections</groupId> <artifactId>commons-collections</artifactId> <version>3.2.1</version> </dependency> <dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> <version>2.6</version> </dependency> <dependency> <groupId>org.eclipse.aether</groupId> <artifactId>aether-api</artifactId> <version>${aetherVersion}</version> </dependency> <dependency> <groupId>org.eclipse.aether</groupId> <artifactId>aether-util</artifactId> <version>${aetherVersion}</version> </dependency> <dependency> <groupId>org.eclipse.aether</groupId> <artifactId>aether-impl</artifactId> <version>${aetherVersion}</version> </dependency> <dependency> <groupId>org.eclipse.aether</groupId> <artifactId>aether-connector-file</artifactId> <version>${aetherVersion}</version> </dependency> <dependency> <groupId>org.eclipse.aether</groupId> <artifactId>aether-connector-asynchttpclient</artifactId> <version>${aetherVersion}</version> </dependency> <dependency> <groupId>org.eclipse.aether</groupId> <artifactId>aether-connector-wagon</artifactId> <version>${aetherVersion}</version> </dependency> <dependency> <groupId>io.tesla.maven</groupId> <artifactId>maven-aether-provider</artifactId> <version>${mavenVersion}</version> </dependency> <dependency> <groupId>org.apache.maven.wagon</groupId> <artifactId>wagon-ssh</artifactId> <version>${wagonVersion}</version> </dependency> <dependency> <groupId>org.apache.maven.wagon</groupId> <artifactId>wagon-file</artifactId> <version>${wagonVersion}</version> </dependency> <dependency> <groupId>org.apache.maven.wagon</groupId> <artifactId>wagon-http</artifactId> <version>${wagonVersion}</version> </dependency> <dependency> <groupId>org.apache.maven.wagon</groupId> <artifactId>wagon-http-lightweight</artifactId> <version>${wagonVersion}</version> </dependency>
рдЕрдм рдЖрдкрдХреЛ рдирд┐рд░реНрднрд░рддрд╛ рд╕рдВрдХрд▓реНрдк рддрд░реНрдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдПрдХреНрд▓рд┐рдкреНрд╕ рдПрдерд░ рдореЗрдВ рдХрд╛рдлреА рд╕рд░рд▓ рдФрд░ рд╕рд╣рдЬ рдПрдкреАрдЖрдИ рд╣реИред рд╕рднреА рд╡рд┐рд░реВрдкрдг рд╕рд╛рдХреНрд╖реНрдп рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ RepositorySystem рдХреА рдПрдХ рд╡рд╕реНрддреБ рдкрд░ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдирд┐рд░реНрднрд░рддрд╛ рдкрджреНрдзрддрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдЗрд╕ рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреА рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕рд┐рд╕реНрдЯрдорд╕рд┐рд╕реНрдЯрдо рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рддреБрд░рдВрдд рдЯрд╛рдЗрдк рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдлрд┐рд░ рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
рдЫрд┐рдкрд╛ рд╣реБрдЖ рдкрд╛рда Dependency dependency = new Dependency(new DefaultArtifact("com.my.plugin:plugin-sum:jar:1.0-SNAPSHOT"), "compile"); CollectRequest collectRequest = new CollectRequest(); collectRequest.setRoot(dependency);
RepositorySystem рдХреЗ рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ WagonProvider рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕реА рд╕реНрд░реЛрдд рд╕реЗ рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЪрд╛рд╣реЗ рд╡рд╣ http рдпрд╛ ftp рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╣реЛ, рдпрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, sshред рдЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗ рд╕рдХрддрд╛ рд╣реИ:
рдЫрд┐рдкрд╛ рд╣реБрдЖ рдкрд╛рда public class ManualWagonProvider implements WagonProvider { public Wagon lookup(String roleHint) throws Exception { if ("file".equals(roleHint)) { return new FileWagon(); } else if (roleHint != null && roleHint.startsWith("http")) {
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдореЗрдВ рдбрд┐рдкреЗрдВрдбреЗрдВрд╕реАрдЗрдХреЛрд▓реЗрд╡рд░ рд╡рд░реНрдЧ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдорд┐рд▓рддрд╛ рд╣реИ, рдЬреЛ рд╣рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ рдХрд┐рд╕реА рднреА рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдХреА рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреА рд╕реВрдЪреА рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛:
рдЫрд┐рдкрд╛ рд╣реБрдЖ рдкрд╛рда public class DependencyResolver { public static final String MAVEN_CENTRAL_URL = "http://repo1.maven.org/maven2"; public static class ResolveResult { public String classPath; public List<ArtifactResult> artifactResults; public ResolveResult(String classPath, List<ArtifactResult> artifactResults) { this.classPath = classPath; this.artifactResults = artifactResults; } } final RepositorySystemSession session; final RepositorySystem repositorySystem; final List<String> repositories = new ArrayList<String>(); public DependencyResolver(File localRepoDir, String... repos) throws IOException { repositorySystem = newRepositorySystem(); session = newSession(repositorySystem, localRepoDir); repositories.addAll(Arrays.asList(repos)); } public synchronized ResolveResult resolve(String artifactCoords) throws Exception { Dependency dependency = new Dependency(new DefaultArtifact(artifactCoords), "compile"); CollectRequest collectRequest = new CollectRequest(); collectRequest.setRoot(dependency); for (int i = 0; i < repositories.size(); ++i) { final String repoUrl = repositories.get(i); collectRequest.addRepository(i > 0 ? repo(repoUrl, null, "default") : repo(repoUrl, "central", "default")); } DependencyNode node = repositorySystem.collectDependencies(session, collectRequest).getRoot(); DependencyRequest dependencyRequest = new DependencyRequest(); dependencyRequest.setRoot(node); DependencyResult res = repositorySystem.resolveDependencies(session, dependencyRequest); PreorderNodeListGenerator nlg = new PreorderNodeListGenerator(); node.accept(nlg); return new ResolveResult(nlg.getClassPath(), res.getArtifactResults()); } private RepositorySystemSession newSession(RepositorySystem system, File localRepoDir) throws IOException { DefaultRepositorySystemSession session = MavenRepositorySystemUtils.newSession(); LocalRepository localRepo = new LocalRepository(localRepoDir.getAbsolutePath()); session.setLocalRepositoryManager(system.newLocalRepositoryManager(session, localRepo)); return session; } private RepositorySystem newRepositorySystem() { DefaultServiceLocator locator = MavenRepositorySystemUtils.newServiceLocator(); locator.setServices(WagonProvider.class, new ManualWagonProvider()); locator.addService(RepositoryConnectorFactory.class, WagonRepositoryConnectorFactory.class); return locator.getService(RepositorySystem.class); } private RemoteRepository repo(String repoUrl) { return new RemoteRepository.Builder(null, null, repoUrl).build(); } private RemoteRepository repo(String repoUrl, String repoName, String repoType) { return new RemoteRepository.Builder(repoName, repoType, repoUrl).build(); } }
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдКрдкрд░ рджрд┐рдП рдЧрдП рдХреЛрдб рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рдордиреЗ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ ServiceLocator рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реЗрд╡рд╛ рдХреЗ рд░реВрдк рдореЗрдВ ManualWagonProvider рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдЬреЛ рдХрд┐ RepositorySystem рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рддрд╛ рд╣реИред рдЕрдм рдЖрдк рдХрд┐рд╕реА рднреА рднрдВрдбрд╛рд░ рдореЗрдВ рд╕реНрдерд┐рдд рдХрд┐рд╕реА рднреА рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдХреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдЗрд╕реЗ рддрддреНрдХрд╛рд▓ рдХрд░рдиреЗ рдФрд░ рдЗрд╕реЗ рд╕реНрдерд╛рдиреАрдп рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рд▓рд┐рдП рдФрд░ рдЦреЛрдЬ рдХреЗ рд▓рд┐рдП рджреВрд░рд╕реНрде рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреА рд╕реВрдЪреА рдореЗрдВ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ (рдЕрдВрддрд┐рдо рддрд░реНрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИ)ред
рдЕрдм рд╣рдо рдирд┐рдореНрди рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рдХреЛрдб рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЫрд┐рдкрд╛ рд╣реБрдЖ рдкрд╛рда DependencyResolver resolver = new DependencyResolver(new File(System.getProperty("user.home") + "/.m2/repository")); DependencyResolver.ResolveResult result = resolver.resolve("com.my.plugin:plugin-sum:jar:1.0-SNAPSHOT"); for (ArtifactResult res : result.artifactResults) { System.out.println(res.getArtifact().getFile().toURI().toURL()); }
рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рд╕рднреА рдкреНрд▓рдЧрдЗрди-рдпреЛрдЧ рд╡рд┐рд░реВрдкрдг рд╕рд╛рдХреНрд╖реНрдп рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░реЗрдЧрд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕реНрдХреНрд░реАрди рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧрд╛ред рдЗрд╕рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдХреБрдЫ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:
file:/home/smecsia/.m2/repository/com/my/plugin/plugin-sum/1.0-SNAPSHOT/plugin-sum-1.0-SNAPSHOT.jar file:/home/smecsia/.m2/repository/com/my/plugin/plugin-api/1.0-SNAPSHOT/plugin-api-1.0-SNAPSHOT.jar
рдЕрдм рд╣рдореЗрдВ рдЬрд╛рд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕реВрдЪреА рдХрд╛ рд░рд╛рд╕реНрддрд╛ рдорд┐рд▓рд╛ рдЬреЛ рд╣рдорд╛рд░реЗ рдкреНрд▓рдЧрдЗрди рдХреЗ рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВред SumPlugin рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЕрд▓рдЧ рд╡рд░реНрдЧ рд▓реЛрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдорд┐рд▓реА рд╕рднреА рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд┐рдирдХреЗ рдореВрд▓ рд▓реЛрдбрд░ рд╕рд┐рд╕реНрдЯрдо рд▓реЛрдбрд░ рд╣реИред
рдЫрд┐рдкрд╛ рд╣реБрдЖ рдкрд╛рда List<URL> artifactUrls = new ArrayList<URL>(); for (ArtifactResult artRes : resolveResult.artifactResults) { artifactUrls.add(artRes.getArtifact().getFile().toURI().toURL()); } final URLClassLoader urlClassLoader = new URLClassLoader(artifactUrls.toArray(new URL[artifactUrls.size()]), getSystemClassLoader());
рдПрдХ рдЕрд▓рдЧ рд▓реЛрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╣рдо рд▓реЛрдб рдХрд┐рдП рдЧрдП рд╡рд░реНрдЧ рдХреЗ рдПрдХ рдирдП рдЙрджрд╛рд╣рд░рдг рдХреЛ рдЖрд░рдВрдн рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
Class<?> clazz = urlClassLoader.loadClass("com.my.plugin.SumPlugin"); final Plugin pluginInstance = (Plugin) clazz.newInstance(); System.out.println("Result: " + pluginInstance.perform(2, 3));
рдЕрдм рд╣рдо рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рднрд░реА рд╣реБрдИ рдХрдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП "рдкреНрд░рджрд░реНрд╢рди" рд╡рд┐рдзрд┐ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдпрд╣ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рд╕рд░рд▓ рдкреНрд░рдХрд╛рд░ рдХреЗ рддрд░реНрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрджрд┐ рддрд░реНрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдкрд░рд╛рд╡рд░реНрддрди рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рдорд╛рд░реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд▓реЛрдбрд░ рдХреЗ рдЕрдВрджрд░ рд╕рдорд╛рди рд╡рд░реНрдЧреЛрдВ рдХреА рдЕрдиреНрдп рдкреНрд░рддрд┐рдпрд╛рдБ рд╣реЛрддреА рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо рдкреНрд▓рдЧрдЗрди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рдирд╣реАрдВ рд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрдВрдж рдХрд░рдиреЗ рдФрд░ рдкреНрд▓рдЧрдЗрди рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреИрд╕реЗ рдХрд┐ рдпрд╣ рд╣рдорд╛рд░реЗ рд╡рд░реНрддрдорд╛рди рд╡рд░реНрдЧ рд▓реЛрдбрд░ рджреНрд╡рд╛рд░рд╛ рд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЖрдк рдкреНрд░реЙрдХреНрд╕реА рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдЗрд╕ рд▓реЗрдЦ рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдкрд░реЗ рд╣реИред рдЗрд╕ рддрдВрддреНрд░ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рд╕реЗ рдПрдХ
cglib рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рдХреЛрдб
рдЬреАрдердм рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИред