লিনেঞ্জেন - কীভাবে স্থানীয় জারের জন্য নির্ভরতা যুক্ত করতে হয়?


117

আমি আমার ক্লোজার প্রকল্পটি তৈরি এবং বিকাশের জন্য লিনিনজেন ব্যবহার করতে চাই। স্থানীয় ডিরেক্টরি থেকে কিছু জার বাছাই করতে বলার জন্য কি প্রজেক্ট.সিএলজে সংশোধন করার কোনও উপায় আছে?

আমার কিছু মালিকানা জার রয়েছে যা পাবলিক রেপোগুলিতে আপলোড করা যায় না।

এছাড়াও, ক্লোজার প্রকল্পগুলির জন্য "লাইব" ডিরেক্টরি বজায় রাখতে লেনিনজেন ব্যবহার করা যেতে পারে? যদি আমার ক্লোজার প্রকল্পগুলির একগুচ্ছ একই জারগুলি ভাগ করে দেয় তবে আমি তাদের প্রত্যেকের জন্য আলাদা কপি বজায় রাখতে চাই না।

ধন্যবাদ


1
ধন্যবাদ সবাইকে. যেহেতু এটি আমার সকলকে চিহ্নিত করা হয়েছিল, এটি একটি কাঁটাযুক্ত বিষয় যা এখনও কোনও স্পষ্ট উত্তর পাওয়া যায়নি।
সংকেত সন্ধানকারী

উত্তর:


38

আপনি আপনার প্রাইভেট জারগুলিতে couldুকিয়ে রাখতে পারেন lib/এবং তারা ক্লাসপাথে থাকতে পারে lein swankএবং এর মতো উদ্দেশ্যে ; এটি নির্ভরতা পরিচালন সরঞ্জামটি ব্যবহার করার পয়েন্টকে পরাভূত বলে মনে হচ্ছে, যদিও আপনি যদি সেই নির্ভরশীলতাগুলি প্রকৃতপক্ষে না চান তবে আপনি লেইনিঞ্জেনকে "ওপেন সোর্স নির্ভরতা পরিচালন সরঞ্জাম" হিসাবে বিবেচনা করতে পারেন এবং সতর্কতা অবলম্বন করতে পারেন lein clean

পরিস্থিতি আরও জটিল হওয়ার সাথে সাথে - বিপুল সংখ্যক প্রাইভেট জারের সাথে জড়িত রয়েছে, সেগুলি বিকশিত হয়েছে এবং আপনার সেগুলির জন্য কিছু সংস্করণ তথ্য অ্যাকাউন্টে নেওয়া দরকার - একটি বেসরকারী মাভেন রেপো তৈরির আর্থারের ধারণাটি আরও উপযুক্ত হতে পারে।


(এইচআরটি লেইনিঞ্জেন-নির্দিষ্ট অংশ কাট-অফ পয়েন্টের ইঙ্গিত দেয় ... ক্লোজুরে জমিতে সাধারণ বিল্ড / নির্ভরতা পরিচালন সরঞ্জাম সরঞ্জামের কাহিনী সম্পর্কিত তথ্যের জন্য নীচে চালিয়ে যান, এমন কিছু লিঙ্ক যা আমি মনে করি যে আপনার পরিস্থিতিতে খুব কার্যকর হতে পারে))

এছাড়াও, এখনও হিসাবে, ক্লোজারের জন্য সেরা বিল্ড টুল কোনটি নিয়ে এই প্রশ্নে সর্বজনীন চুক্তি নেই, এবং লেনিনজেঞ্জ, যখন ম্যানশায়ার করার সময়ও এই অঞ্চলে বৈশিষ্ট্যগুলি এবং পোলিশগুলিতে ক্রমাগত লাভ করছে - যার অর্থ, বিশেষত, এটি এখনও সম্পূর্ণ হয়নি। প্রগম্যাটিক বুকশেল্ফের "প্রোগ্রামিং ক্লোজার" এর লেখক স্টুয়ার্ট হ্যালোয়ের একটি উক্তি এখানে: "আমার 2 সি: লেনিনজেন একটি গুরুত্বপূর্ণ পদক্ষেপ, তবে এখনও অনেক কিছু করার দরকার আছে।" সম্পূর্ণ পোস্টিং এবং খুব আকর্ষণীয় আলোচনার জন্য: ক্লুজুরে স্পেসের মতো সরঞ্জামগুলি তৈরি করুন এবং লিনিনগেন , ক্লোজার এবং লাইব্রেরি দেখুন: আমি কী অনুপস্থিত?ক্লোজার গুগল গ্রুপে থ্রেড। অনেক অংশগ্রহণকারী নির্দিষ্টভাবে স্থানীয় নির্ভরতা কোনও ভাণ্ডার, স্থানীয় বা অন্যথায় অন্তর্ভুক্ত না থাকার প্রয়োজনীয়তার কথা উল্লেখ করেন এবং তারা এ জাতীয় পরিস্থিতিগুলির জন্য কী সমাধান নিয়ে এসেছেন সে সম্পর্কে বিস্তারিতভাবে বর্ণনা করেন। সম্ভবত আপনি দেখতে পাচ্ছেন যে সেখানে এমন কিছু আছে যা আপনার সমস্যার সমাধান করতে পারে / ভবিষ্যতে এটির সমাধান করতে পারে, যখন বৈশিষ্ট্যগুলি পরিপক্ক হয়?

যাইহোক, এটা সম্ভব যে লেইনিনজেন আসলে কিছু জটিল পরিস্থিতির জন্য এখনও একটি ভাল গল্প প্রস্তুত নাও করতে পারেন। যদি আপনি মনে করেন এটি আপনার ক্ষেত্রে সত্য হতে পারে (এবং আপনি ব্যক্তিগত রেপো ধারণাটি বিবেচনা করার পরে আমি বোঝাতে চাইছি), উপরে উল্লিখিত থ্রেড থেকে নেওয়া মভেন-ভিত্তিক বিকল্পগুলির জন্য এখানে কিছু লিঙ্ক রয়েছে: পলিগ্লোট মেভেন , ক্লোজার-মাভেন-প্লাগইন ; এই ব্লগ পোস্টClojure সঙ্গে maven ব্যবহার করার চেষ্টা করা লোকদের জন্য দরকারী হতে হবে। আমার মনে আছে, মাইকেল ব্র্যান্ডমিয়ার (তার অনলাইন হ্যান্ডেলের নীচে কোটাকার) গ্রোডল (একটি গ্রোভি বিল্ড সিস্টেম) ব্যবহার করে ক্লোজিউরস্ক নামে ক্লোজারকে উপস্থাপিত করার জন্য; আমি নিজেই এটি চেষ্টা করে দেখিনি, যেমন গ্রোভির বিষয়ে প্রথম জিনিসটি জানেন না, তবে তিনি দাবি করেছেন যে এটির সাথে একটি দুর্দান্ত বিল্ডিং অ্যাক্ট চালানো হয়েছে এবং আমি বিশ্বাস করি যে এটি ম্যাভেনের সাথে কিছুই করার নেই - যা এমন কিছু যা নিজেই এবং এটির একটি উপকার আমাদের কিছু জন্য। :-)


2
পুনরায়: "ক্লোজারের সেরা বিল্ড টুল কোনটি নিয়ে এই প্রশ্নে সর্বজনীন চুক্তি নেই" ... আজকের হিসাবে, মনে হবে লেইনিঞ্জেন এখন রান-আউট স্ট্যান্ডার্ড। 2013 জরিপের ফলাফল: lein-survey-2013.herokuapp.com/results
ডেভিড জে

8
লিনেঞ্জেন ভি 2 অনুসারে, lib / ডিরেক্টরি কার্যকারিতা সরানো হয়েছে। দেখুন: github.com/technomancy/leiningen/wiki/…
Jared314

আজকের হিসাবে, লিনিঙ্গেন সম্ভবত এখনও সবচেয়ে জনপ্রিয়, তবে বুটও জনপ্রিয়।
মঙ্গল

64

কেবলমাত্র ব্যবহার করুন : আপনার প্রজেক্ট.সিএলজেজ ফাইলে রিসোর্স-পাথ । আমি এটি ব্যবহার করি, যেমন সিবেল সার্ভারগুলির সাথে সংযোগ স্থাপন করতে। সবেমাত্র আমার প্রকল্প ডিরেক্টরিতে একটি সংস্থান ডিরেক্টরি তৈরি করেছে এবং সেখানে জার ফাইলগুলি অনুলিপি করেছে। তবে অবশ্যই আপনি আরও জেনেরিক ডিরেক্টরি ব্যবহার করতে পারেন:

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

তারপরে লিন Repl থেকে আমি সিবেল ডেটা বিনের উদাহরণ তৈরি করতে পারি, যেমন

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

আপনার যদি নতুন জাভা সংস্করণ থাকে তবে আপনি অবশ্যই আরও সাধারণ ডিরেক্টরিতে আপনার পাথ স্পেসিফিকেশনে ওয়াইল্ডকার্ডগুলি ব্যবহার করতে পারেন:

:resource-paths ["/tmp/SiebelJars/*"]

লেন 2 গ্লোব্বিং সমর্থন করে না, তবে আপনার প্রয়োজন হলে github.com/dchelimsky/lein-expand-resource-paths প্লাগইন উপলব্ধ।
13:40 '

2
এটি আমি এখনও অবধি দেখা সেরা উত্তর। স্থানীয় এমভিএন ইনস্টল আমার পক্ষে আর কাজ করবে না বলে মনে হয়।
ডেভিড উইলিয়ামস

7
এটি উবারজারের সাথে কাজ করে না, কারণ উবারজার নির্ভরতা শ্রেণীর ফাইলগুলি যুক্ত করার পরিবর্তে পাত্রে নির্ভরতা জড়কে যুক্ত করবে।
টোবিয়াস দোহন

50
  1. প্রকল্পে একটি ডিরেক্টরি তৈরি করুন:

    mkdir maven_repository

  2. এই ভাণ্ডারে স্থানীয় জারগুলি যুক্ত করুন:

    উদাহরণস্বরূপ, এই কমান্ডটি jaad-0.8.3.jarমাভেন সংগ্রহস্থলে ফাইল যুক্ত করে :

    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

এই সতর্কতাটি উপেক্ষা করা যেতে পারে, যেহেতু জারটি প্রকল্পে পরীক্ষা করা হবে এবং ইন্টারনেট থেকে ডাউনলোড করা হবে না।

আসল উত্স: লেইনিঞ্জেনের সাথে স্থানীয় জেআর ব্যবহার করা (অনুলিপি করার পরে পরিবর্তন হয়েছে)


এই লিঙ্কে দুর্দান্ত পদক্ষেপ। এটি আমার পক্ষে খুব সহায়ক ছিল।
goger

2
নতুন সংস্করণগুলির সাথে আপনি এমভিএন স্থাপনা ব্যবহার করতে পারেন: ইনস্টলের পরিবর্তে স্থাপন করুন: ফাইল-ইনস্টল করুন এবং -Dll = ফাইল নির্দিষ্ট করুন: -লোকালআরপোসিটরিপথ = রেপোর পরিবর্তে রেপো। প্রজেক্টস সিএলজে আপনি এর পরে ব্যবহার করতে পারেন:: সংগ্রহশালা local "স্থানীয়" "ফাইল: maven_repository"} দেখুন: gist.github.com/stuartsierra/3062743 (আমি প্রশ্নটি সম্পাদনা করেছি, তবে এখনও অনুমোদনের প্রয়োজন)
টোবিয়াস ডোমহান

33

আমি lein pom; lein jar; lein installলাইব্রেরি বিকাশ করার সময় ভাল কাজ খুঁজে পেতে ।

লাইব্রেরিটি বিকাশকালে এটি করুন এবং আপনার অ্যাপ্লিকেশনটির প্রয়োজন এটি কোনও বিনা :repositoriesপ্রয়োজনে ব্যবহার করবে ।


বিকল্পভাবে, lein do pom, jar, installকিছুটা সংক্ষিপ্ত।


এটি অন্য যেভাবে লাইব্রেরি কল করার অনুমতি দেয় :dependencies [[project-name "version"]]


3
অন্যান্য সমাধানের তুলনায় এটি এত সহজ এবং এটি কার্যকর! মাভেন ইনস্টল করার দরকার নেই। ধন্যবাদ।
dkinzer

লিন প্রকল্পের ফাইলে আপনি কীভাবে ফলাফলটি জারকে উল্লেখ করেন?
ইন্টারস্টার

অন্য যে কোনও:dependencies [[project-name "version"]]
রোবোলি

1
এটি উইন্ডোতেও দুর্দান্ত কাজ করে। ইতিমধ্যে উল্লিখিত হয়েছে হিসাবে maven ইনস্টল করার প্রয়োজন নেই। আমি এটি উইন্ডোজে ইন্টেলিজ + ক্রেসিভ দিয়ে চেষ্টা করেছি এবং এটি পুরোপুরি কার্যকর। উইন্ডোজ কমান্ড লাইনে একটি "লাইন পম; লিন জার; লিন ইনস্টল" করেছিলেন?
এন্ডবেগিন

4
আপনার কেবল করা দরকার lein install। এটি আপনার জন্য জার এবং পম তৈরি করবে।
নেফফক্স

15

আমি বিশ্বাস করি যে "সঠিক" পদ্ধতিটি একটি ব্যক্তিগত মাভেন রিপোজিটরি তৈরি করা যাতে আপনি জারগুলি একক স্থানে সংরক্ষণ করতে পারেন এবং আপনার সমস্ত শাখা ইত্যাদি পরিবর্তনগুলি বেছে নিতে পারে। এটি আপনার কাজকর্মের জন্য অতিরিক্ত মূল্য হতে পারে। এগুলি যদি সহজ উপায় হয় তবে আমি আগ্রহী।


5
ধন্যবাদ, আমি এটি খতিয়ে দেখব। যদিও আমাকে বলতে হবে মাভেনরা আমার হৃদয়ে ভয়। এটি করতে যদি আপনি কোনও সাধারণ ধাপে ধাপে ধরণের উদাহরণ জানেন তবে দয়া করে আমাকে এটিতে নির্দেশ করুন। জবা বিশ্বে বিল্ডগুলি এত জটলা কেন জটিল?
সিগন্যালসিকার


4

সাম্প্রতিক উন্নয়ন s3-wagon-privateলেইনিঞ্জেনের জন্য ফিলের প্লাগইন: https://github.com/technomancy/s3-wagon-private

এটি আপনাকে একটি ব্যক্তিগত দূরবর্তী রেপোতে শিল্পকর্মগুলি প্রকাশ করার অনুমতি দেয় should


3

এই সমাধানগুলির কোনওটিই আমার কাজে আসেনি। পরিবর্তে আমি একটি স্থানীয় সংগ্রহস্থল ইনস্টল করেছি এবং স্থানীয় রেপোতে জার ফাইলটি ইনস্টল করতে মাভেন ব্যবহার করেছি এবং স্থানীয় রেপোগুলিকে আমার প্রজেক্টে সিএলজে যুক্ত করেছি .c

কমান্ড লাইনে:

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

এবং আমি আমার প্রজেক্টটি লিখি

(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 ]


2

সম্ভবত এই পূর্ববর্তী উত্তরটি একবার দেখুন , আমি ধাপে ধাপে নির্দেশাবলী সরবরাহ করি একটি প্রকল্পের স্থানীয় সংগ্রহস্থল সেট আপ করার জন্য (অ্যাক্সেস করা file://) যাতে আপনি আপনার জারগুলি ইনস্টল করতে পারেন।



0

সেরা বিকল্প হ'ল একটি প্রাইভেট জেএফগ্র / নেক্সাস আর্টফ্যাক্টরি সেটআপ করা এবং সেখানে আপনার স্ন্যাপশট / রিলিজ স্থাপন করা এবং তারপরে সেই আর্টিফ্যাক্টরিটি আপনার প্রকল্পের সংগ্রহস্থল হিসাবে যুক্ত করুন।

অন্যান্য সহজ উপায়

স্ট্যাটিক এইচটিটিপি সাধারণ ধরণের ব্যক্তিগত সংগ্রহস্থল হ'ল স্থিতিশীল ফাইলগুলির পূর্ণ ডিরেক্টরিতে নির্দেশিত একটি ওয়েব সার্ভার। আপনি লিনিনজেন যে মেশিনে চালাচ্ছেন সেই মেশিনির ডিরেক্টরি যদি স্থানীয় হয় তবে সেই পদ্ধতিতে ডিপোজি করতে আপনার: রিপোজিটরিগুলিতে একটি ফাইল: /// URL ব্যবহার করতে পারেন।

এসসিপি যদি আপনার এসএসএইচ পাবলিক কীগুলির সাথে ইতিমধ্যে কোনও সার্ভার সেট আপ করা থাকে তবে স্কাইপ পরিবহন ব্যক্তিগত নির্ভরতা প্রকাশ ও গ্রাস করার একটি সহজ উপায়। নিম্নলিখিত ডিফপ্রজেক্টের ভিতরে রাখুন:

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

তারপরে ডিফপ্রজেক্টের বাইরে নিম্নলিখিতটি রাখুন:

(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 []))))

আপনি যদি স্ক্রিন ট্রান্সপোর্ট ব্যবহার করে কোনও সংগ্রহস্থল স্থাপন করতে পারেন এবং HTTP- র মাধ্যমে এনজিঙ্কস বা অনুরূপ কিছু সেট আপ করে থাকেন তবে এটি HTTP- র মাধ্যমে সংগ্রহস্থল ডিরেক্টরিটি পরিবেশন করতে পারে।

ক্লোজারগুলিতে এনবি এসসিপি মোতায়েন করা আর সমর্থিত নয়

আসল উত্স এখানে https://github.com/technomancy/leiningen/blob/stable/doc/DEPLOY.md

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.