পূর্ববর্তী আমি কীভাবে কমান্ড লাইন থেকে মাভেন প্রকল্পের ভেনশনটি পরিবর্তন করতে হবে যা একটি নতুন সমস্যার দিকে নিয়ে যায় সে সম্পর্কে আমি একটি প্রশ্ন জারি করেছি ।
পূর্বে আমি সংস্করণ নম্বর পেতে সক্ষম হয়েছি কারণ সংস্করণটি এমন একটি সম্পত্তি হিসাবে সংরক্ষণ করা হয়েছিল যা কমান্ড লাইন (ব্যাশ) থেকে গ্রেপ করা এবং পার্স করা সহজ was এখন যেহেতু এর জন্য pom.xML উপাদান ব্যবহার করা হয়েছে, সমস্ত নির্ভরতা এবং সম্ভবত কিছু অন্যরাও এটি ব্যবহার করার কারণে এটি আর অনন্য নয়। আমি মনে করি এক্সএমএল বা কিছু খুব প্রসঙ্গ-সচেতন সেড কমান্ড পার্স করার জন্য বাহ্যিক সরঞ্জাম ছাড়া বাশ স্ক্রিপ্টের সাথে বর্তমান সংস্করণ নম্বর পাওয়ার কোনও উপায় নেই ।
আমার মতামতের সবচেয়ে পরিচ্ছন্ন সমাধান হ'ল মাভেনের এই সংস্করণটির তথ্য হস্তান্তর করা। আমি বিভিন্ন বৈশিষ্ট্য পুনরুদ্ধারের জন্য একটি কাস্টম মাভেন প্লাগইন লেখার কথা ভাবছিলাম তবে আমি ভেবেছিলাম আমি এখানে আগে জিজ্ঞাসা করব।
সুতরাং, ${project.version}
কমান্ড লাইনের মান পাওয়ার কোনও সহজ উপায় আছে ? আগাম ধন্যবাদ.
সমাধান
সাহায্যের জন্য ধন্যবাদ। আমাকে cd
ডিরেক্টরিতে নিজেই যেতে হয়েছিল তবে এটি সহজেই করা যায়। আমার বাশ স্ক্রিপ্টে আমার আছে
version=`cd $project_loc && mvn org.apache.maven.plugins:maven-help-plugin:2.1.1:evaluate -Dexpression=project.version | sed -n -e '/^\[.*\]/ !{ /^[0-9]/ { p; q } }'`
যা আমাকে বর্তমান সংস্করণ দেয় যা আমি তারপরে অগ্রসর করতে পারি। গ্রিপিং সহজতর হতে পারে তবে আমি ভেবেছিলাম আমি যতটা সম্ভব শক্তিশালী চাই, তাই আমি প্রথম লাইনে সন্তুষ্ট হয়ে একটি নম্বর দিয়ে শুরু করব এবং এটি সংস্করণ নম্বর হিসাবে পরিচালনা করার চেষ্টা করব।
# Advances the last number of the given version string by one.
function advance_version () {
local v=$1
# Get the last number. First remove any suffixes (such as '-SNAPSHOT').
local cleaned=`echo $v | sed -e 's/[^0-9][^0-9]*$//'`
local last_num=`echo $cleaned | sed -e 's/[0-9]*\.//g'`
local next_num=$(($last_num+1))
# Finally replace the last number in version string with the new one.
echo $v | sed -e "s/[0-9][0-9]*\([^0-9]*\)$/$next_num/"
}
এবং আমি কেবল কল করে এটি ব্যবহার করি
new_version=$(advance_version $version)
আশা করি এটি কাউকে সাহায্য করবে।
grep -e '^[[:digit:]]'