جعل إعدادات الوكيل/الخادم Maven قابلة للتكوين بناءً على الموقع؟

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

سؤال

لذلك لست متأكدًا من أفضل طريقة لإنجاز ذلك ، لكن في الأساس لدي كمبيوتر محمول أستخدمه في مشاريع Maven. إنه يعمل بشكل جيد عندما أكون في العمل ، لكن بمجرد الخروج من باب خادم وكيل الشركة وخادم Maven ، غالبًا settings.xml ملف عندما أكون في المنزل إذا لم أكن لا vpn'ed في:

  • لدينا خادم وكيل مستودع Maven المثبت للشركات لتخزين بعض القطع الأثرية الخاصة بنا والتعامل مع كونه الرجل الأوسط للقطع الأثرية الشائعة الاستخدام.
  • لدينا وكيل HTTP نستخدمه للاتصال بالعالم الخارجي.

تم التعامل مع كلا التكوين من قبل بلدي settings.xml ملف لإعداد أ مجموعة Nexus واحدة و الوكلاء Maven. إذا لم أكن متصلاً بـ VPN أثناء الابتعاد عن المكتب ، فيجب عليّ أن أتجول مع الإعدادات.

ما هي الحلول التي وجدها أي شخص آخر للتعامل مع هذا؟ لقد كنت أحاول ملفات تعريف لإدارة الوكيل ، لكن لا يبدو لي أن أعمل بشكل صحيح ، وبدأت تبدو قبيحة للغاية. هل هناك بعض تكوينات الإعدادات التي يمكن يكشف عندما لا أكون وراء الوكيل في العمل ولا أستخدم خادم وكيل الشركة أو خادم Maven؟

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

المحلول

بينما يمكنني التفكير في بعض الحلول المستندة إلى الملف الشخصي للتعامل مع الوكيل (في الأساس ، قراءة <active> القيمة من خاصية محددة في ملف تعريف) ، لن يكون هذا مؤتمراً بالكامل ( تنشيط الملف الشخصي لا تدعم الأشياء القائمة على الشبكة) ما لم تتمكن من العثور على ملف موجود أو لا يعتمد على موقعك (وفي هذه الحالة ، يمكنك استخدام مشغل ملفات موجود/مفقود ولكن هذا هو نوع من الاختراق). على أي حال ، هذا من شأنه أن يحل جزءًا واحدًا فقط من المشكلة لأنه لا يمكن الإعلان عن المرايا في الملفات الشخصية (انظر MNG-3525).

لذا ، بدلاً من محاولة التحكم في ذلك بملف تعريف ، فإن اقتراحي هو استخدام اثنين settings.xml ولجرير الخاص بك settings-home.xml ملف مع -s خيار سطر الأوامر عندما تكون في المنزل.

هناك خيار آخر هو أتمتة التغييرات في settings.xml مع البرنامج النصي (سيكون Groovy اختيارًا جيدًا كما أبلغ أحدهم MNG-3525).

نصائح أخرى

لقد وجدت متغيرات البيئة للاستخدام لتعيينها nonProxyHosts معا مع proxy و noproxy الأسماء المستعارة الصدفة لتكون الحل الأكثر ملاءمة عند التبديل بين الشبكات مع الوكيل وبدون ذلك.

في settings.xml, ، تكوين الوكيل مع

<host>proxy.corporation.int</host>
<port>8080</port>
<nonProxyHosts>${env.MAVEN_NONPROXY}</nonProxyHosts>

ثم في ~/.profile تعيين

export MAVEN_NONPROXY_PROXY='*.corporation.int|local.net|some.host.com'
export MAVEN_NONPROXY_NOPROXY='*'

alias proxy="export MAVEN_NONPROXY=\"$MAVEN_NONPROXY_PROXY\" && export all_proxy=http://proxy.corporation.int:8080"
alias noproxy="export MAVEN_NONPROXY=\"$MAVEN_NONPROXY_NOPROXY\" && unset all_proxy"


للقيام بالمفتاح عند التجوال ، ستنفذ فقط من قذيفة:

[me@linuxbox me]$ proxy

أو

[me@linuxbox me]$ noproxy

من الواضح أن كلا الاسم المستعارين proxy و noproxy يمكن أن تشمل تغييرات أكثر بكثير من مجرد إعداد MAVEN_NOPROXY و all_proxy.

شعرت بالإحباط من نفس المشكلة: الاضطرار إلى تحرير الإعدادات يدويًا. xml عند التجوال بين الشبكات. في الواقع في الواقع ، كتبت مكونًا إضافيًا Maven يمكّن الاكتشاف التلقائي لإعدادات الوكيل. يستخدم التنفيذ الحالي مكتبة الوكيل-فول التي كتبها Bernd Rosstauscher للكشف عن إعدادات الوكيل بناءً على تكوين نظام التشغيل ، ومستعرض ، وإعدادات البيئة.

لقد قمت للتو بإصدار الكود المصدري للمكون الإضافي على Github ، ضمن ترخيص Apache 2.0: https://github.com/volkertb/autoproxy-maven-plugin

اهلا وسهلا بكم لتجربها ومعرفة ما إذا كانت تلبي احتياجاتك. أي ردود فعل أو مساهمات مرحب بها!

(ملاحظة: ليس عليك بالضرورة إضافة المكون الإضافي إلى POM لمشروعك. يمكنك استدعاءه من سطر الأوامر أيضًا ، بعد تثبيته. انظر README على الموقع لمزيد من التفاصيل.)

يمكنك ضبط MAVEN_OPTS عندما تحتاج إلى تفعيل وكيل:

export MAVEN_OPTS="-Dhttp.proxyHost=my-proxy-server -Dhttp.proxyPort=80 -Dhttp.nonProxyHosts=*.my.org -Dhttps.proxyHost=my-proxy-server -Dhttps.proxyPort=80 -Dhttps.nonProxyHosts=*.my.org"
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top