كيف يمكنني استخدام مهمة القطران النمو والحفاظ على أذونات الملفات؟

StackOverflow https://stackoverflow.com/questions/1517297

  •  19-09-2019
  •  | 
  •  

سؤال

بالطبع يمكن القيام به باستخدام exec task, ، لكن سؤالي هو:

هل من الممكن أن تفعل ذلك باستخدام مهمة القطران؟

هل كانت مفيدة؟

المحلول

لا أعتقد أن هناك طريقة للحفاظ على الأذونات الحالية، حسب هذه المذكرة من نسخ المهمة:

ملاحظة UNIX: لا يتم الاحتفاظ بأذونات الملف عند نسخ الملفات؛ ينتهي بهم الأمر مع أذونات Umask الافتراضية بدلا من ذلك. يحدث هذا بسبب عدم وجود أي وسيلة للاستعلام أو تعيين أذونات الملفات في أوقات تشغيل Java الحالية. إذا كنت بحاجة إلى وظيفة نسخ الاحتفاظ بإذن، استخدم <exec executable="cp" ... > في حين أن.

ومع ذلك مهمة القطران يمكن أن تأخذ واحدة أو أكثر tarfileset عناصر. ال tarfileset يمكن تعريفها مع filemode و / أو dirmode سمة لتحديد أذونات UNIX. إذا قمت بتحديد العديد من الملفات مطابقة فقط تلك الملفات للحصول على كل مجموعة من الأذونات المطلوبة، فسيتم تضمين الملفات الموجودة في تلك المجموعة مع تلك الأذونات.

نصائح أخرى

هذا النقص في الإذن يجعل مهمة القطران النمو عديمة الفائدة تقريبا بالنسبة لي. لا توجد طريقة للقيام بذلك دون تنفيذ القطران نظام التشغيل مع مهمة exec.:

    <exec executable="tar" output="/dev/null" os="Linux">
        <arg value="--exclude-from=files_to_exclude.txt"/>
        <arg value="-cvz"/>
        <arg value="--file=${file.tar}"/>
        <arg value="."/>
    </exec>

هناك ثنائيات جنو القطران لجميع أنظمة التشغيل تقريبا المعروفة للإنسان. ضع أحدهم في نظام التحكم في الإصدار واستخدامه وفقا لنظام التشغيل الخاص بك. نعم، سوف تحتاج النملة إلى شوكة عملية في كل مرة يتم تشغيلها.

استخدام tarfileset عملت لمشروعنا. إليك مثال عمل في حالة احتاج شخص ما:

    <tar destfile="${dist}/${module.name}-${version}.tar">
        <tarfileset dir="${package.dir}" filemode="550" includesfile="${home.dir}/includelist.txt">
            <include name="*.sh"/>
        </tarfileset>
    </tar>

في هذا المثال، يتم استخدام IncludeList.txt لمعرفة الملفات التي تضمينها في ملف القطران. جميع الملفات التي تحتوي على * .sh يمتلك إذن قراءة وتنفيذ (550) للمستخدم والمجموعة.

أمل أن هذا يساعد شخصاما.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top