سؤال

أريد استخدام Leiningen لبناء وتطوير مشروع Alojure الخاص بي. هل هناك طريقة لتعديل project.clj لإخبارها باختيار بعض الجرار من الدلائل المحلية؟

لدي بعض الجرار الاحتكارية التي لا يمكن تحميلها على Repos العام.

أيضا، هل يمكن استخدام Leiningen للحفاظ على دليل "LIB" لمشاريع البعد؟ إذا قامت مجموعة من مشاريع Alojure الخاصة بي بمشاركة نفس الجرار، فأنا لا أريد الحفاظ على نسخة منفصلة لكل منها.

شكرا

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

المحلول

يمكنك وضع الجرار الخاصة بك في lib/ وكنوا على classpath لأغراض lein swank وما شابه ذلك؛ يبدو أن هذا هزيمة نقطة استخدام أداة إدارة التبعية، على الرغم من أنك لا تفعل ذلك بالفعل يريد تتم إدارة هذه التبعيات، يمكنك علاج Leiningen ك "أداة إدارة التبعيات مفتوحة المصدر" وربما تكون حذرا lein clean.

نظرا لأن الوضع يصبح أكثر تعقيدا - هناك عدد أكبر من الجرار الخاصة المعنية، فإنها تتطور وتحتاج إلى اتخاذ بعض معلومات الإصدار عليها في الاعتبار - قد تكون فكرة Arthur الخاصة بإنشاء ريبو Maven الخاص أكثر ملاءمة.


(يدل الموارد الموارد البشرية نقطة قطع جزء معين من Leiningen ... متابعة أدناه للحصول على معلومات حول قصة الأدوات الإدارية العامة / إدارة التبعية العامة في أرض البداية، بما في ذلك بعض الروابط التي أعتقد أنها قد تأتي في متناول يدك.)

أيضا، اعتبارا من ذلك، لا يوجد اتفاق عالمي بشأن مسألة المسألة التي تعد أفضل أداة بناء للعبد، و Leiningen، في حين تكتسب في MindShare، كما يكتسب باستمرار في ميزات المناطق والمعنى البولندي، على وجه الخصوص ذلك انها ليست كاملة بعد. إليكم اقتباس من Stuart Halloway، مؤلف كتاب "برامج البرمجيات" براغماتي ":" بلدي 2C: Leiningen خطوة مهمة، ولكن لا يزال هناك الكثير للقيام به. " للنشر الكامل ومناقشة مثيرة جدا للاهتمام إعادة: إنشاء أدوات وما شابه ذلك في مساحة البلاغة، راجع Leiningen، Clojure والمكتبات: ما الذي أفتقده؟ خيط على مجموعة جوجل البعد. يذكر العديد من المشاركين على وجه التحديد الحاجة إلى وجود تبعيات محلية لا تحتوي على أي مستودعات أو محلية أو غير ذلك، وتوصيل الحلول التي توصلوا إليها لهذه السيناريوهات. ربما ترى ما إذا كان هناك أي شيء هناك يمكن أن يحل مشكلتك الآن / قد يحلها في المستقبل، عندما تقوم ميزة بتعيين ناضجة؟

على أي حال، من الممكن أن Leiningen قد لا تكون في الواقع قصة جيدة جاهزة حتى الآن لبعض السيناريوهات المعقدة. إذا كنت تشعر أن هذا قد يكون صحيحا في قضيتك (وأعني بعد أن تفكر في فكرة الريبو الخاصة)، إليك بعض الروابط إلى بدائل مقرها في المنافين مأخوذة من الخيط المذكور أعلاه: بوليكلوت مافن, clojure-maven-plugin; هذا بلوق نشر يهدف إلى أن تكون مفيدة للأشخاص الذين يحاولون استخدام Maven مع عباءة. كما أتذكر، تستخدم Meikel Brandmeyer (أيضا على مقبضه عبر الإنترنت من Kotarak) HARGE (نظام بناء رائع) مع مكون إضافي لاستيعاب عبادة البلاط يسمى Clojuresque؛ لم أحاول ذلك أبدا بنفسي، كما لا أعرف أول شيء في الأخدود، لكنه يدعي أنه يدير بممارسة بناء لطيفة للغاية وأعتقد أنه لا علاقة له ب Maven - وهو أمر زائد في حد ذاته بالنسبة لبعضنا. :-)

نصائح أخرى

مجرد استخدام : مسارات الموارد في ملف project.clj الخاص بك. أستخدمها، على سبيل المثال للاتصال بخوادم Siebel. فقط أنشأت أ مصادر دليل في دليل المشروع الخاص بي ونسخ ملفات جرة هناك. ولكن بالطبع يمكنك استخدام دليل أكثر عام:

(defproject test-project "0.1.0-SNAPSHOT"
:description "Blah blah blah"
...
:resource-paths ["resources/Siebel.jar" "resources/SiebelJI_enu.jar"])

ثم من لاين بالفعل يمكنني إنشاء حالات فول بيانات Siebel، على سبيل المثال

(def sbl (com.siebel.data.SiebelDataBean.))
(.login sbl "siebelServer" "user" "password")
...

إذا كان لديك إصدار جافا الأحدث، يمكنك بالطبع استخدام أحرف البدل في مواصفات المسار الخاصة بك مثل هذا للحصول على مزيد من الدليل العام:

:resource-paths ["/tmp/SiebelJars/*"]
  1. إنشاء دليل في المشروع:

    mkdir maven_repository

  2. أضف الجرار المحلية إلى هذا المستودع:

    على سبيل المثال، هذا الأمر يضيف jaad-0.8.3.jar ملف إلى مستودع Maven:

    mvn deploy:deploy-file -Dfile=jaad-0.8.3.jar -DartifactId=jaad -Dversion=0.8.3 -DgroupId=jaad -Dpackaging=jar -Durl=file:maven_repository

  3. أضف ما يلي project.clj

    :repositories {"local" "file:maven_repository"}

  4. الآن منتظم lein deps يجب أن تعمل:

    $ lein deps Downloading: jaad/jaad/0.8.3/jaad-0.8.3.pom from local Transferring 0K from local [WARNING] *** CHECKSUM FAILED - Error retrieving checksum file for jaad/jaad/0.8.3/jaad-0.8.3.pom - IGNORING

يمكن تجاهل التحذير، حيث سيتم فحص الجرة في المشروع وعدم تنزيله من الإنترنت.

المصدر الأصلي: باستخدام جرة محلية مع leiningen (تغيرت منذ النسخ)

وجدت lein pom; lein jar; lein install يعمل بشكل جيد عند تطوير المكتبات.

قم بذلك في المكتبة التي يتم تطويرها وتطبيقك الذي يتطلب استخدامه دون أي :repositories foo المطلوبة.


بدلا من ذلك، lein do pom, jar, install أكثر موجزة قليلا.


هذا يسمح بالاتصال المكتبة مثل أي شيء آخر :dependencies [[project-name "version"]]

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

قد ترغب في استخدام البرنامج المساعد lein-localrepo: https://github.com/kumarshantanu/lein-localrepo.

التطوير الأخير هو فيل s3-wagon-private البرنامج المساعد ل Leiningen: https://github.com/technomanny/s3-wagon-private.

يجب أن يسمح لك هذا بنشر القطع الأثرية إلى Repo عن بعد خاص.

أيا من هذه الحلول عملت لي. بدلا من ذلك، قمت بتثبيت مستودع محلي، واستخدمت Maven لتثبيت ملف JAR في Repo المحلي، وأضاف Repo المحلي إلى Project.CLJ

في سطر الأوامر:

mvn deploy:deploy-file -DgroupId=local -DartifactId=bar \
    -Dversion=1.0.0 -Dpackaging=jar -Dfile=bar.jar \
    -Durl=file:repo

وأنا أكتب project.clj مثل هذا:

(defproject foo "0.1.0-SNAPSHOT"
  :dependencies [[org.clojure/clojure "1.4.0"]
                 [local/bar "1.0.0"]]
  :repositories {"project" "file:repo"})

آمل أن يساعد.

المرجعي: https://gist.github.com/stuartsierra/3062743. ]

ربما إلقاء نظرة على هذا الإجابة السابقة, ، أقدم تعليمات خطوة بخطوة لإعداد مستودع محلي للمشروع (الوصول إليها من خلال file://) حيث يمكنك تثبيت الجرار الخاصة بك.

جرب حلاي كيفية بناء ملف جرة مع التبعياتhttp://middlesphere-1.blogspot.ru حتى 2014/06/how-to-make-jar-with-dependation-using.html.

أفضل خيار هو إعداد قطعة أثرية JFROG / NEXUS خاصة ونشر اللقطات / الإصدارات الموجودة هناك، ثم قم بإضافة تلك Artifiactory كمستودعات في Project.CLJ

طرق أبسط أخرى هي

ثابت http. أبسط نوع من مستودع خاص هو خادم ويب مدبب في دليل مليء بالملفات الثابتة. يمكنك استخدام ملف: /// url في المستودعات الخاصة بك: لنشر هذه الطريقة إذا كان الدليل محلي للجهاز الذي يعمل عليه Leiningen.

SCP.إذا كان لديك بالفعل خادم تم إعداده باستخدام مفاتيح SSH العامة الخاصة بك، فإن النقل SCP هو وسيلة بسيطة لنشر واستهلاك التبعيات الخاصة. ضع ما يلي داخل Defroject:

:plugins [[org.apache.maven.wagon/wagon-ssh-external "2.6"]]
:repositories [["releases" "scp://somerepo.com/home/repo/"]]

ثم ضع ما يلي خارج Defroject:

(cemerick.pomegranate.aether/register-wagon-factory!
 "scp" #(let [c (resolve 'org.apache.maven.wagon.providers.ssh.external.ScpExternalWagon)]
          (clojure.lang.Reflector/invokeConstructor c (into-array []))))

من الممكن النشر أيضا في مستودع باستخدام نقل SCP ويستهلك منه عبر HTTP إذا قمت بإعداد Nginx أو شيء مشابه لخدمة دليل المخزون عبر HTTP.

NB SCP ينتشر إلى Clojars لم تعد مدعومة

المصدر الأصلي هنا https://github.com/technomancy/leiningen/blob/stable/doc/deploy.md.

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