أوراق اعتماد تجاهلها مع Maven Scmchangelog-Plugin
سؤال
عندما أقوم بتكوين Scmchangelog-Plugin., ، كما هو مكتوب في الأمثلة / البرنامج التعليمي، وتشغيل جيل الموقع، يتم تجاهل اسم المستخدم وكلمة المرور التي قمت بتعيينها.
تقول الوثائق أن اسم المستخدم وكلمة المرور التي يجب استخدامها للوصول إلى SCM يمكن تكوينها في تكوين البرنامج المساعد. هذا يبدو وكأنه هذا:
<reporting>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>scmchangelog-maven-plugin</artifactId>
<version>1.3</version>
<configuration>
<grammar>REMY</grammar>
<connectionUrl>scm:svn:svn+ssh://repo.lan/repo/project/trunk</connectionUrl>
<username>user</username>
<password>password</password>
</configuration>
</plugin>
</plugins>
</reporting>
عندما أقوم بتشغيل جيل الموقع (موقع MVN)، يقول الإخراج على Commandline
[INFO] Executing: /bin/sh -c cd /tmp && svn --username user --password '*****'
--non-interactive list --xml svn+ssh://repo.lan/repo/project/tags/
لكنني ما زلت مطالبا بكلمة المرور والمستخدم المستخدم للوصول إلى SCM هو تشغيل الأمر MVN.
اي افكار عن ما قد يكون خاطئ؟
تحديث:
لقد تعقب المشكلة في عميل سطر الأوامر SVN الآن.
المشكلة هي أنه عندما أقوم بتشغيل أمر مثل ما يلي
svn list --username foo --password bar --non-interactive svn+ssh://host/repo/project
يبدو أن أداة سطر الأوامر تتجاهل الخيارات المحددة. ما زلت استجواب لكلمة مرور، والمستخدم المستخدم للوصول إلى عنوان URL هو الذي ينفذ الأمر، وليس مجموعة واحدة في الخيارات.
أنا أستخدم SVN الإصدار 1.4.6 هنا.
أي أفكار ما قد يحدث خطأ هنا؟
المحلول
هذا ال علة معروفة. وبعد السلوك الصحيح سيكون عرض خطأ ينص على أن --username
و --password
لا يتم دعم الخيارات عند استخدام آلية مصادقة خارجية مثل SSH، بدلا من تجاهل هذه الخيارات بصمت.
لإصلاح مشكلتك، قم بتمرير اسم مستخدم "FOO" الخاص بك كجزء من عنوان URL:
svn+ssh://foo@host/repo/project
واستخدام شيء مثل SSH- وكيل لتخزين بيانات الاعتماد الخاصة بك، وبالتالي تجنب موجه كلمة المرور.
نصائح أخرى
هل تقصد scm:changelog
هدف Maven SCM البرنامج المساعدب إذا كان هذا هو الحال، فسيكون لديك خياران لضمان أن يتم تمرير SCM بيانات الاعتماد الخاصة بك.
النهج المفضل
بعض مقدمي SCM تتيح لك تحديد ملف إعدادات أدناه M2_Home / CONF /
يجب أن يحدد مزود SCM الخاص بك كيفية تحديد إعدادات التكوين. للتخريب، انتهى بي مع ملف مثل هذا:
<svn-settings>
<user>[username]</user>
<password>[password]</password>
</svn-settings>
إذا لزم الأمر، يمكنك تحديد ملف إعدادات SCM في موقع آخر عن طريق تمرير معلمة سطر الأوامر إلى الملف:
-Dmaven.scm.svn.config_directory=your_configuration_directory
نهج آخر
الخيار الآخر (غير المرغوب فيه) هو تكوين scm
قسم من بوم بحيث تحتوي عناوين URL على اسم المستخدم وكلمة المرور. تنفيذ هذا هو الموفر المحدد، ولكن بشكل عام من أشكال مماثلة لهذا المثال للتخريب:
scm:svn:http://[user]:[password]@host/path
حتى قسم SCM الخاص بك في POM سيبدو شيئا مثل هذا:
<scm>
<connection>scm:svn:http://[user]:[password]@host/path</connection>
<developerConnection>
scm:svn:http://[user]:[password]@host/path
</developerConnection>
<url>http://somerepository.com/viewsvn</url>
</scm>
من الواضح أن هذا غير مرغوب فيه بوضوح بيانات اعتماد SCM الخاصة بك في نهاية بوم المثبتة، يجب عليك فقط استخدام هذا فقط لاختبار الاتصال في رأيي. لمزيد من المعلومات انظر تنسيق عنوان URL SCM الصفحة والتفاصيل الخاصة ب مقدمي SCM
تحقق مما إذا كان هناك اسم مستعار قابل للاستخدام الخاص بك من أمر "SVN".
تحقق أيضا من ما إذا كان المضيف الوجهة يسمح بمصادقة وضع كلمة المرور. قد تستحق أيضا التحقق من أن سطح المكتب لا يخدع مع بعض "وكيل كيرينغ" مفيد، يمكن أن تتداخل تلك مع SVN + SSH.