মাভেন: কমান্ড লাইন পাস করার যুক্তি থেকে একটি জাভা ফাইল কীভাবে চালানো যায় run


88

আমি নিম্নলিখিত সমস্যা আছে। আমি mvnকোনও Main.javaফাইলের জন্য কমান্ড লাইন থেকে চালাতে চাই । Main.javaএকটি পরামিতি গ্রহণ করে। কমান্ড লাইন থেকে আমি কীভাবে এটি করব?

আমি একটি উদাহরণ খোঁজার চেষ্টা করেছি কিন্তু আমি সফল হইনি। কেউ আমাকে এর উদাহরণ দিয়ে আমাকে সাহায্য করতে পারে?

আমি এখানে তাকিয়েছিলাম কিন্তু আমার কি করা উচিত তা বেশ বুঝতে পারিনি।

এছাড়াও, আমি কীভাবে মেইন.জাভা ফোল্ডারের চেয়ে আলাদা ফোল্ডার থেকে এই আদেশটি কার্যকর করব?

উদাহরণস্বরূপ মধ্যে Main.javaঅবস্থিত my/java/program/Main.java। আমি কি করা উচিত

mvn exec:java -Dexec.mainClass="what to put here?" -Dexec.args="arg0 arg1 arg2"

4
সংযুক্ত টিউটোরিয়াল থেকে আপনি ঠিক কী বুঝতে পারেন নি? এটি বেশ সোজা-এগিয়ে। আপনার প্রশ্নের সাথে যুক্ত করুন, আপনি এখন পর্যন্ত কোডটি চেষ্টা করেছেন।
অনুমান

মূলত আমি যা করার চেষ্টা করছি তা হল অন্য জাভা ক্লাসের জাভা ক্লাসটি কল করা। সাধারণত আমি ক্লাসটি থেকে সেই ক্লাসটি চালাই। আমি রানটাইম.জেটআরটাইম ()। এক্সিকিউট ("") ব্যবহার করছি; অন্য জাভা প্রোগ্রাম থেকে এই ক্লাস চালানো। তবে চালানোর জন্য মেইন.ক্লাসের এমভিএন দরকার। (আমি প্রশ্নটি সম্পাদনা করেছি)
ফেডন রউসউ

উত্তর:


152

আপনি চালাতে পারে: mvn exec:exec -Dexec.args="arg1"

এই আর্গুমেন্টের পাস হবে ARG1 আপনার প্রোগ্রাম করতে।

আপনার সম্পূর্ণ শ্রেণিভিত্তিক মূল শ্রেণীর নির্দিষ্ট করা উচিত, উদাহরণস্বরূপ, একটি মেইন জাভা যা প্যাকেজ পরীক্ষায় রয়েছে তার প্রয়োজন

mvn exec:java  -Dexec.mainClass=test.Main

-fপ্যারামিটারটি ব্যবহার করে , এখানে ড্রিবিড হিসাবে , আপনি এটি অন্য ডিরেক্টরি থেকেও চালাতে পারেন।

mvn exec:java -Dexec.mainClass=test.Main -f folder/pom.xm

একাধিক আর্গুমেন্টের জন্য, কমান্ড লাইনে আপনি যেমন কেবল একটি স্থান দিয়ে আলাদা করুন।

mvn exec:java -Dexec.mainClass=test.Main -Dexec.args="arg1 arg2 arg3"

একটি দিয়ে আলাদা হওয়া যুক্তিগুলির জন্য space, আপনি 'argument separated with space' উদ্ধৃতি চিহ্নগুলির অভ্যন্তরে গ্রুপ তৈরি করতে পারেন can

mvn exec:java -Dexec.mainClass=test.Main -Dexec.args="'argument separated with space' 'another one'"

4
হ্যাঁ, তবে এটি কীভাবে জানবে যে মূল.জভা ফাইলটি কোথায় অবস্থিত?
ফেডন রাউসউ

আমার কাছে যদি pom.xml না থাকে। আমি নিম্নলিখিত ত্রুটিটি পেয়েছি Mojo চালানো যায় না: জাভা। এটি একটি বিদ্যমান pom.xML সহ একটি প্রকল্প প্রয়োজন, তবে বিল্ডটি এটি ব্যবহার করছে না।
ফেডন রউসউ

একটি মেভেন প্রকল্পের জন্য এই ফাইলটি ছাড়াই একটি পম.এক্সএমএল প্রয়োজন, মাভেন ব্যবহার করা কিছুটা বোধগম্য নয়। সুতরাং, সম্ভবত আপনি প্রথমে একটি খাঁটি প্রকল্প তৈরি করতে চান? তারপরে অন্য সমস্ত সমাধানগুলি ঠিকঠাকভাবে কাজ করা উচিত।
বেহে

যেহেতু আমি মাভেন প্লাগইনটির সাথে Eclipse ব্যবহার করি আমার মনে হয়েছিল এটি স্বয়ংক্রিয়ভাবে উত্পন্ন হয়েছে তবে সম্ভবত আমি ভুল ছিল was আমি এটি
খতিয়ে দেখব

ফাঁকা স্থান যুক্তিগুলি কীভাবে পাস করবেন?
ভানুয়ান

6

এটি mvn exec:javaচালানোর পাশাপাশি এটি দিয়ে চালাতেও পারেনmvn exec:exec

mvn exec:exec -Dexec.executable="java" -Dexec.args="-classpath %classpath your.package.MainClass"

আমি এই ক্ষেত্রে এক্সএমএক্স যুক্তিটি কোথায় রাখব?
ফাবিচ

4
এটিকে দেওয়ার চেষ্টা করুন -Dexec.args:mvn exec:exec -Dexec.executable="java" -Dexec.args="-Xmx4g -classpath %classpath your.package.MainClass"
বেনিডিক্ট ক্যাপেল

আমি দেখতে পাচ্ছি না যে এটি (আইএমও)
এক্সিকিউটের

6

যেমন শেল স্ক্রিপ্ট যুক্ত করা run.shএটি আরও সহজ করে তোলে:

#!/usr/bin/env bash
export JAVA_PROGRAM_ARGS=`echo "$@"`
mvn exec:java -Dexec.mainClass="test.Main" -Dexec.args="$JAVA_PROGRAM_ARGS"

তারপরে আপনি কার্যকর করতে সক্ষম হবেন:

./run.sh arg1 arg2 arg3

এটি দুর্দান্ত কাজ করে! কেন আপনি তা ব্যাখ্যা করতে পারেন: -Dexec.args = "$ @"
বাউমাটো

4
$@উদ্ধৃতিতে মোড়ানো স্ট্রিংয়ের তালিকায় সমস্ত যুক্তি সংরক্ষণ করে। আপনি যদি এটি সরাসরি ব্যবহার করতে চান তবে আপনি ব্যবহার করতে পারেন $*- সমস্ত যুক্তি একটি একক স্ট্রিং হিসাবে। আপনি কি এই চেষ্টা করেছেন?
টমি 1005
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.