මේවන් ස්නැප්ෂොට් එකක තේරුම ගැන මම ටිකක් ව්යාකූල වී ඇති අතර අප එය ගොඩනඟන්නේ ඇයි?
Answers:
මේවන් හි ස්නැප්ෂොට් අනුවාදයක් නිකුත් කර නොමැති එකකි.
එහි අදහස තමයි පෙර එය 1.0
නිදහස් (හෝ වෙනත් ඕනෑම නිදහස්) පවතින්නේද, සිදු 1.0-SNAPSHOT
. එම අනුවාදය බවට පත්විය හැකිය 1.0
. එය මූලික වශයෙන් " 1.0
සංවර්ධනය වෙමින් පවතී". මෙය සැබෑ නිකුතුවකට ආසන්න විය හැකිය 1.0
, නැතහොත් සෑහෙන දුරක් විය හැකිය ( 0.9
නිදසුනක් ලෙස නිකුතුවෙන් පසු ).
"තාත්වික" අනුවාදයක් සහ ස්නැප්ෂොට් අනුවාදයක් අතර වෙනස වන්නේ ස්නැප්ෂොට් වලට යාවත්කාලීනයන් ලැබිය හැකි වීමයි. ඒ කියන්නේ 1.0-SNAPSHOT
අද බාගත කිරීම ඊයේ හෝ හෙට බාගත කරනවාට වඩා වෙනස් ගොනුවක් ලබා දිය හැකිය.
සාමාන්යයෙන්, ස්නැප්ෂොට් පරායත්තතා පැවතිය යුත්තේ සංවර්ධනයේදී පමණක් වන අතර මුදා හරින ලද අනුවාදයක් (එනම් ස්නැප්ෂොට් නොවන) ස්නැප්ෂොට් අනුවාදයක් මත යැපීමක් නොතිබිය යුතුය.
1.0-DEVELOPMENT
" හෝ " 1.0-INPROGRESS
" වැනි ලෙස හැඳින්විය නොහැක්කේ ඇයි, මිනිසුන්ට පැහැදිලි නොවන වචන භාවිතා කිරීමට
අනෙක් තිදෙනාගේ පිළිතුරු මඟින් -SNAPSHOT
අනුවාදයක් යනු කුමක්ද යන්න පිළිබඳ හොඳ දැක්මක් ඔබට ලබා දේ . මට අවශ්ය වූයේ මාවන්ගේ SNAPSHOT
යැපීම සොයාගත් විට එහි හැසිරීම පිළිබඳ තොරතුරු එක් කිරීමට ය .
ඔබ යෙදුමක් සාදන විට, මේවන් දේශීය ගබඩාවේ පරායත්තතා සොයනු ඇත . එහි ස්ථාවර අනුවාදයක් සොයාගත නොහැකි නම්, එය මෙම පරායත්තතාවය ලබා ගැනීම සඳහා දුරස්ථ ගබඩාවල (අර්ථ දක්වා ඇති settings.xml
හෝ pom.xml
) සොයනු ඇත . ඊළඟ ගොඩනැගිලි සඳහා එය ලබා ගැනීම සඳහා එය දේශීය ගබඩාවට පිටපත් කරනු ඇත.
උදාහරණයක් ලෙස, foo-1.0.jar
පුස්තකාලයක් ස්ථාවර අනුවාදයක් ලෙස සලකනු ලබන අතර , මේවන් එය දේශීය ගබඩාවේ සොයා ගන්නේ නම්, එය වර්තමාන ගොඩනැගීම සඳහා මෙය භාවිතා කරයි.
දැන්, ඔබට foo-1.0-SNAPSHOT.jar
පුස්තකාලයක් අවශ්ය නම් , මෙම අනුවාදය ස්ථායී නොවන බවත් වෙනස්කම් වලට භාජනය වන බවත් මේවන් දැන ගනු ඇත. දේශීය පුස්තකාලයේ මෙම පුස්තකාලයේ අනුවාදයක් හමු වුවද, දුරස්ථ ගබඩාවල නව අනුවාදයක් සොයා ගැනීමට මේවන් උත්සාහ කරන්නේ එබැවිනි. කෙසේ වෙතත්, මෙම චෙක්පත සිදු කරනු ලබන්නේ දිනකට එක් වරක් පමණි. ඔබ නම් එහි අර්ථය වන්නේ ඒ foo-1.0-20110506.110000-1.jar
සඳහා ඔබේ දේශීය නිධිය තුල (එනම් මෙම පුස්තකාලය 2011/05/06 දින 11:00:00 උත්පාදනය කර ඇත), සහ ඔබ එම දිනයේ නැවත ලැබෙන කව්ලුවේ ගොඩ නැඟීමට පවත්වා ගෙන යන්නේ නම්, ලැබෙන කව්ලුවේ ඇත නොහැකි වූ නිධි පරීක්ෂා නව අනුවාදයක් සඳහා.
ඔබේ නිධිය අර්ථ දැක්වීමේදී මෙම යාවත්කාලීන ප්රතිපත්තිය වෙනස් කිරීමට මාවන් ඔබට ක්රමයක් සපයයි:
<repository>
<id>foo-repository</id>
<url>...</url>
<snapshots>
<enabled>true</enabled>
<updatePolicy>XXX</updatePolicy>
</snapshots>
</repository>
විය XXX
හැකි තැන :
SNAPSHOT
අනුවාදය ස්ථාවර පුස්තකාල ලෙස හසුරුවනු ඇත.SNAPSHOT
සංස්කරණ: mvn clean package -U
අනුව ලැබෙන කව්ලුවේ නිබන්ධනය
-U
ධජය සමඟ ප්රවේශම් වන්න . MNG-4142 නිසා එය ඔබ අපේක්ෂා කරන දේ නොකරනු ඇත.
mvn install
මගේ දේශීය ගබඩාවට 1.0-SNAPSHOT අනුවාදයේ භාජනයක් ස්ථාපනය කිරීමට මම දිව්වා . ඊළඟ දවසේ මම ව්යාපෘතියේ වෙනස්කම් කළ නමුත් අනුවාදය වෙනස් කළේ නැත - එවිට එය ක්රියාත්මක වන විට mvn install
එය මගේ දේශීය ගබඩාවේ වෙනස් වන බවක් නොපෙනුණි. එය අපේක්ෂිත හැසිරීමද? අනුවාදයක් නැවත භාවිතා mvn install
කර එහි වෙනස්කම් සිදු කිරීමෙන් පසු එය නැවත ලිවීමට මට නොහැකිද?
“SNAPSHOT” යන පදයෙහි අර්ථය වන්නේ ගොඩනැගීම යනු එක්තරා වේලාවක ඔබේ කේතයේ කෙටි සටහනකි.
සාමාන්යයෙන් එයින් අදහස් වන්නේ මෙම අනුවාදය තවමත් විශාල සංවර්ධනයක පවතින බවයි.
කේතය සුදානම් වූ විට සහ එය මුදා හැරීමට කාලය පැමිණි විට, ඔබට POM හි ලැයිස්තුගත කර ඇති අනුවාදය වෙනස් කිරීමට අවශ්ය වනු ඇත. එවිට "SNAPSHOT" වෙනුවට "1.0" වැනි ලේබලයක් භාවිතා කරනු ඇත.
අනුවාදකරණය සඳහා යම් උපකාරයක් සඳහා, අර්ථකථන අනුවාද පිරිවිතර බලන්න .
“නිකුතුවක්” යනු වෙනස් නොවන අනුවාදයක් සඳහා වන අවසාන ගොඩනැගීමයි.
“ස්නැප්ෂොට්” යනු එකම නමක් ඇති වෙනත් ගොඩනැගීමකින් ප්රතිස්ථාපනය කළ හැකි ගොඩනැගීමකි. එයින් ගම්ය වන්නේ ගොඩනැගීම ඕනෑම වේලාවක වෙනස් විය හැකි අතර එය තවමත් ක්රියාකාරී සංවර්ධනය වෙමින් පවතී.
එකම කේතය මත පදනම්ව විවිධ ගොඩනැඟිලි සඳහා ඔබට විවිධ පුරාවස්තු තිබේ. උදා: ඔබට නිදොස් කිරීම සමඟ එකක් සහ නැතිව එකක් තිබිය හැකිය. ජාවා 5.0 සඳහා එකක් සහ ජාවා 6 සඳහා එකක්. සාමාන්යයෙන් ඔබට අවශ්ය සෑම දෙයක්ම කරන එක් ගොඩනැඟිල්ලක් තිබීම වඩාත් සරල ය. ;)
ව්යාපෘතියක් දැනට සක්රීයව සංවර්ධනය වෙමින් පවතින බව දැක්වීමට මාවන් අනුවාදවල වචනාර්ථයෙන් “SNAPSHOT” අඩංගු විය හැකිය.
උදාහරණයක් ලෙස, ඔබේ ව්යාපෘතියේ “1.0-ස්නැප්ෂොට්” අනුවාදයක් තිබේ නම් සහ ඔබ මෙම ව්යාපෘතියේ පුරාවස්තු මේවන් ගබඩාවකට යෙදවුවහොත්, ඔබ 11 ට නිකුතුවක් යෙදවීමට අදහස් කරන්නේ නම් මේවන් මෙම අනුවාදය “1.0-20080207-230803-1” දක්වා පුළුල් කරයි. : 2008 පෙබරවාරි 7 වන දින ප.ව. 08 යූ.ටී.සී. වෙනත් වචන වලින් කිවහොත්, ඔබ සැණින් ඡායාරූපයක් යෙදූ විට, ඔබ මෘදුකාංග සංරචකයක් නිකුත් නොකරයි; ඔබ නිශ්චිත වේලාවක සංරචකයක ඡායාරූපයක් නිකුත් කරයි.
එබැවින් ප්රධාන වශයෙන් ස්නැප්ෂොට් අනුවාදයන් සක්රීය සංවර්ධනය යටතේ පවතින ව්යාපෘති සඳහා යොදා ගනී. ඔබේ ව්යාපෘතිය සක්රීය සංවර්ධනය වෙමින් පවතින මෘදුකාංග සංරචකයක් මත රඳා පවතී නම්, ඔබට ස්නැප්ෂොට් නිකුතුවක් මත රඳා පැවතිය හැකි අතර, ඔබ ගොඩනඟන විට ගබඩාවකින් නවතම ස්නැප්ෂොට් බාගත කිරීමට මාවන් වරින් වර උත්සාහ කරනු ඇත. ඒ හා සමානව, ඔබේ පද්ධතියේ මීළඟ නිකුතුවට “1.8” අනුවාදයක් ලැබෙන්නේ නම්, එය විධිමත් ලෙස මුදා හරින තෙක් ඔබේ ව්යාපෘතියට “1.8-ස්නැප්ෂොට්” අනුවාදයක් ඇත.
උදාහරණයක් ලෙස, පහත දැක්වෙන පරායත්තතාවය සෑම විටම වසන්තයේ නවතම 1.8 සංවර්ධන JAR බාගත කරයි:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
<version>1.8-SNAPSHOT”</version>
</dependency>
මේවන් මුදා හැරීමේ ක්රියාවලියට උදාහරණයක්
පාරිභාෂිතය ගැන කරුණු දැක්වීමට මම කැමතියි. අනෙක් පිළිතුරු මාවන්ගේ සන්දර්භය තුළ "ස්නැප්ෂොට්" අනුවාදය යනු කුමක්ද යන්න පිළිබඳව හොඳ පැහැදිලි කිරීම් ලබා දී ඇත. නමුත් එය ස්නැප්ෂොට් නොවන අනුවාදයක් "මුදා හැරීමේ" අනුවාදයක් ලෙස හැඳින්විය යුතුද?
වැනි සුදුසුකම් නොමැති බව ඕනෑම වෙළුමක් ම පෙනෙන්නට වූ "නිදහස්" අනුවාදය, එම අර්ථ විචාර අනුවාද අදහස අතර යම් ආතතියක් නොමැති -SNAPSHOT
නමුත් වැනි සුදුසුකම් නොමැති -beta.4
, සහ "මුදා හැරීමේ" අනුවාදයක් පිළිබඳ මේවන්ගේ අදහස අදහස, එහි නොමැති වීම පමණක් ඇතුළත් බව පෙනේ -SNAPSHOT
.
වෙනත් වචන වලින් කිවහොත්, “මුදා හැරීම” යන්නෙන් අදහස් කරන්නේ “අපට එය මාවන් සෙන්ට්රල් වෙත මුදා හැරිය හැකිද” යන්න හෝ “මෘදුකාංගය එහි අවසාන නිකුතුව මහජනයාට නිකුත් කිරීම” යන්නයි. අප -beta.4
එය මහජනයාට මුදා හැරියහොත් එය “මුදා හැරීමේ” අනුවාදයක් ලෙස සැලකිය හැකිය, නමුත් එය “අවසාන නිකුතුවක්” නොවේ. අර්ථකථන අනුවාදය පැහැදිලිවම පවසන්නේ යම් දෙයක් -beta.4
“පූර්ව මුදාහැරීමේ” අනුවාදයක් වන බැවින් එය “නිකුතුව” අනුවාදයක් ලෙස හැඳින්වීම තේරුමක් නැති බවය -SNAPSHOT
. ඇත්ත වශයෙන්ම නිර්වචනය අනුව පවා -rc.5
නිදහස් කිරීමේ අපේක්ෂකයෙක් මිස සත්ය නිකුතුවක් නොවේ.
ඒ නිසා මාවන් කෙසේ වෙතත්, මගේ මතය අනුව එය වඩාත් සුදුසු යැයි පෙනෙන්නේ කිසිදු සුදුසුකමක් නොමැති “මුදා හැරීමේ” අනුවාදයක් ඇමතීම පමණි -beta.4
. සමහර විට මාවන්හි ස්නැප්ෂොට් නොවන අනුවාදයකට වඩා හොඳ නමක් "ස්ථාවර" අනුවාදයක් වනු ඇත ( වෙනත් පිළිතුරකින් දේවානුභාවයෙන් ). මේ අනුව අපට ඇත්තේ:
1.2.3-beta.4-SNAPSHOT
: පූර්ව මුදාහැරීමේ අනුවාදයක ඡායාරූපයක්.1.2.3-SNAPSHOT
: මුදා හැරීමේ අනුවාදයක සැණින් ඡායාරූපයක්.1.2.3-beta.4
: පූර්ව මුදාහැරීමේ අනුවාදයක ස්ථාවර අනුවාදය.1.2.3
: මුදා හැරීමේ අනුවාදය (එය ස්ථායී, සැණෙකින් නොවන අනුවාදයකි, පැහැදිලිවම).සාමාන්යයෙන් මේවන් තුළ අපට ගොඩනැඟිලි වර්ග දෙකක් තිබේ 1) ස්නැප්ෂොට් බිල්ඩ් 2) මුදා හැරීම්
ස්නැප්ෂොට් බිල්ඩ්ස්: ස්නැප්ෂොට් යනු වර්තමාන යෙදවුම් පිටපත සාමාන්ය අනුවාදයක් මෙන් නොව, දුරස්ථ ගබඩාවේ ඇති සෑම ගොඩනැගිල්ලක් සඳහාම අනුවාදය පරික්ෂා කරයි.
මුදා හැරීම්: මුදා හැරීම යන්නෙන් අදහස් කරන්නේ ගොඩනැගීම සඳහා වන අනුවාදයේ ඇති SNAPSHOT ඉවත් කිරීමයි, මේවා නිත්ය ගොඩනැගීමේ අනුවාද වේ.
නිධිය සඳහා සැණින් ඡායාරූපයක් පෙනෙන්නේ මේ ආකාරයට වන අතර මේ අවස්ථාවේ දී එය සක්රීය කර නැත, එයින් අදහස් කරන්නේ මෙහි සඳහන් කර ඇති නිධිය ස්ථායී වන අතර යාවත්කාලීන කිරීම් අවශ්ය නොවන බවයි.
<project>
...
<repositories>
<repository>
<id>lds-main</id>
<name>LDS Main Repo</name>
<url>http://code.lds.org/nexus/content/groups/main-repo</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
</project>
තවත් නඩුවක් වනුයේ:
<snapshots>
<enabled>true</enabled>
</snapshots>
ඒ කියන්නේ මේවන් මෙම ගබඩාව සඳහා යාවත්කාලීන කිරීම් සොයනු ඇත. ටැග් සමඟ යාවත්කාලීන කිරීම් සඳහා ඔබට අන්තරයක් නියම කළ හැකිය.
සරලවම ස්නැප්ෂොට් යන්නෙන් අදහස් කරන්නේ එය ස්ථායී නොවන අනුවාදය බවයි.
අනුවාදයට 1.0.0 වැනි ස්නැප්ෂොට් ඇතුළත් වන විට -SNAPSHOT යනු එය ස්ථාවර අනුවාදයක් නොවන අතර පරායත්තතා නිරාකරණය කිරීම සඳහා දුරස්ථ ගබඩාවක් සොයන්න
එස්ඩීඑල්සී හි සන්දර්භය අවබෝධ කර ගැනීම ස්නැප්ෂොට් සහ මුදා හැරීම අතර වෙනස තේරුම් ගැනීමට උපකාරී වේ. ඩිව් ක්රියාවලියේදී සංවර්ධකයින් සියල්ලන්ම ඔවුන්ගේ විශේෂාංග මූලික ශාඛාවකට දායක වේ. යම් අවස්ථාවක දී ඊයම් සිතන්නේ ප්රමාණවත් ලක්ෂණ එකතු වී ඇති අතර පසුව ඔහු මූලික ශාඛාවෙන් මුදා හැරීමේ ශාඛාවක් කපා දමනු ඇති බවයි. මෙම කාල ලක්ෂ්යයට පෙර ඕනෑම ගොඩනැගීමක් ස්නැප්ෂොට් වේ. මේ දක්වා පෝස්ට් ගොඩනැගීම නිකුතුවකි. මුදා හැරීමේ පරීක්ෂණය අතරතුර කිසියම් අඩුපාඩුවක් ඇත්නම් නිෂ්පාදනයට යාමට පෙර මුදා හැරීම් ද වෙනස් විය හැකි බව සලකන්න.
Snapshot සරලවම අදහස් කරන්නේ ඔබේ වින්යාසය මත පදනම්ව Maven විශේෂ පරායත්තතාවයේ නවතම වෙනස්කම් පරීක්ෂා කරනු ඇති බවයි. ස්නැප්ෂොට් අස්ථායී වන්නේ එය සංවර්ධනය වෙමින් පවතින නමුත් විශේෂ ව්යාපෘතියක නවතම වෙනස්කම් අවශ්ය නම් ඔබේ යැපුම් අනුවාදය ස්නැප්ෂොට් අනුවාදයට වින්යාස කළ යුතුය. මෙම තත්වය එකිනෙකට සම්බන්ධ ඉතා බහුවිධ නිෂ්පාදන ඇති විශාල සංවිධාන වල මෙම තත්වය ඇතිවේ.
නමට අනුව, ස්නැප්ෂොට් යනු ව්යාපෘතියේ තත්වය සහ එම මොහොතේ එම පරායත්තතාවයන් ය. මේවන් විසින් ව්යාපෘතියේ නවතම SNAPSHOT සොයාගත් සෑම විටම එය ව්යාපෘතියේ පැරණි .jar ගොනුව දේශීය ගබඩාවේ බාගත කර ප්රතිස්ථාපනය කරයි.
සක්රීය සංවර්ධනය යටතේ පවතින ව්යාපෘති සඳහා Snapshot අනුවාද භාවිතා වේ. ඔබේ ව්යාපෘතිය සක්රීය සංවර්ධනය වෙමින් පවතින මෘදුකාංග සංරචකයක් මත රඳා පවතී නම්, ඔබට ස්නැප්ෂොට් නිකුතුවක් මත රඳා පැවතිය හැකි අතර, ඔබ ගොඩනඟන විට ගබඩාවකින් නවතම ස්නැප්ෂොට් බාගත කිරීමට මාවන් වරින් වර උත්සාහ කරනු ඇත.
Maven SNAPSHOT යනු මෘදුකාංග සංවර්ධන චක්රයේ සංවර්ධකයින්ට උපකාර කිරීම සඳහා මාවන් ගොඩනැගීමකින් නිර්මාණය කරන ලද කෞතුක වස්තුවකි. SNAPSHOT යනු කෞතුක වස්තුවක් (හෝ ව්යාපෘති තැනීමේ ප්රති result ලයක්) වන අතර එය ඕනෑම තැනක භාවිතා කරන බවක් නොපෙන්වයි, එය තාවකාලිකව පමණි .ජාර්, කණ, ... නිර්මාණය කර ඇත්තේ ගොඩනැගීමේ ක්රියාවලිය පරීක්ෂා කිරීමට හෝ තවමත් යාමට සූදානම් නැති නව අවශ්යතා පරීක්ෂා කිරීමට ය. නිෂ්පාදන පරිසරයකට. SNAPSHOT පුරාවස්තු ගුණාත්මකභාවය පිළිබඳව ඔබ සතුටු වූ පසු, ඔබට වෙනත් ව්යාපෘති සඳහා භාවිතා කළ හැකි හෝ යෙදවිය හැකි RELEASE පුරාවස්තුවක් නිර්මාණය කළ හැකිය.
ඔබේ ව්යාපෘතියේදී, ඔබට Maven හි pom.xml ගොනුවේ අනුවාද මූලද්රව්යය භාවිතා කරමින් SNAPSHOT එකක් අර්ථ දැක්විය හැකිය:
<groupId>example.project.maven</groupId>
<artifactId>MavenEclipseExample</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<description>Maven pom example</description>
ඔබට වඩා හොඳ මේවන් තේරුම් ගැනීමට අවශ්ය නම් ඔබට මෙම ලිපි ද සොයා බැලිය හැකිය: