মাভেন রান প্রকল্প


231

জাভা শ্রেণীর মূল পদ্ধতিটি সম্পাদন করার জন্য কি কোনও মাভেন "ফেজ" বা "লক্ষ্য" রয়েছে? আমার একটি প্রকল্প রয়েছে যা আমি "এমভিএন রান" এর মতো কিছু করে ম্যানুয়ালি পরীক্ষা করতে চাই।

উত্তর:


348

দেখুন Exec ম্যাভেন প্লাগইন । আপনি জাভা ক্লাসগুলি ব্যবহার করে চালাতে পারেন:

mvn exec:java -Dexec.mainClass="com.example.Main" [-Dexec.args="argument1"] ...

mvn exec:javaঅনুরোধটি এতটা সহজ হতে পারে যদি প্লাগইন কনফিগারেশনটি আপনার pom.xML এ থাকে। মোজোহাউসে প্লাগইন সাইটের আরও বিশদ উদাহরণ রয়েছে

<project>
    <build>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>exec-maven-plugin</artifactId>
                <version>1.2.1</version>
                <configuration>
                    <mainClass>com.example.Main</mainClass>
                    <arguments>
                        <argument>argument1</argument>
                    </arguments>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

14
এই উত্তরটি দেখতে কেমন হবে! রেফারেন্স + সাধারণ উদাহরণ + জটিল উদাহরণ। সহজ উদাহরণটি আমার জন্য কৌতুকটি করেছে (আর কোনও কনফিগার করার দরকার নেই)
কোডউইন

1
এই প্লাগইনটির কি নতুন সংস্করণ রয়েছে (১.২.১ এর চেয়ে নতুন?)
আলেকজান্ডার মিলস

হ্যাঁ, নতুন সংস্করণ, তাই উপরে 1 টু 1 টুকরা কপি করবেন না যদি না আপনি সংস্করণ 1.2.1 দেখুন ব্যবহার করতে চান mojohaus.org/exec-maven-plugin/usage.html সর্বশেষ সংস্করণ এখন পর্যন্ত জন্য এটি 1.6.0
ব্যবহারকারী 1053510

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

এটি কার্যকরভাবে মূল শ্রেণিটি চালায় না
ডেক্সটার

23

1. সম্পাদনা করুন POM.xML

নিম্নলিখিত সম্পত্তি যুক্ত করুন pom.xml। নিশ্চিত হয়ে নিন যে আপনি পুরোপুরি যোগ্যতাসম্পন্ন শ্রেণীর নাম ব্যবহার করেছেন (অর্থাত্ প্যাকেজের নাম সহ) যা mainপদ্ধতি রয়েছে :

<properties>
        <exec.mainClass>fully-qualified-class-name</exec.mainClass>
</properties>

কমান্ড রান করুন

টার্মিনাল থেকে এখন নিম্নলিখিত কমান্ডটি ট্রিগার করুন:

mvn clean compile exec:java

দ্রষ্টব্য আপনি -Dexec.args="xxx"পতাকা দ্বারা আরও যুক্তি পাস করতে পারেন ।


এটি কি আসলে কাজ করে? আমি এটিকে উভয়ই চেষ্টা করে দেখেছি: <exec.mainClass> $ oo foo.bar.SomeMainClass} </ exec.mainClass> এবং <exec.mainClass> foo.bar.SomeMainClass </exec.mainClass> এবং এটি কাজ করে না । ত্রুটিটি একই রকম: [ERROR] প্রকল্পটি নিউট্রেক্সে org.codehaus.mojo: exec-maven-પ્લગઇન: 1.6.0: java (default-cli) কার্যকর করতে ব্যর্থ: গোলের জন্য 'মেইনক্লাস' পরামিতি org.codehaus.mojo : এক্সিকিউটিভ-ম্যাগেন-প্লাগইন: 1.6.0: জাভা অনুপস্থিত বা অবৈধ -> [সহায়তা 1]
নেনাড বুলাটোভিক

এটি কাজ করে, আপনি এই পোস্টটি চেক করতে চাইতে পারেন
সৈকত

@NenadBulatovic: আপনি এটি কাজ যদি foo.bar.SomeMainClass সঙ্গে $ {foo.bar.SomeMainClass} প্রতিস্থাপন -> $ ছাড়া বা {}
কৃষ্ণ সন্তোষ Sampath

14

উপরে উল্লিখিত উত্তরগুলি সঠিক তবে আমি এটি আমার মতো নুবগুলিকে সহজ করে দিচ্ছি। আপনার প্রকল্পের পম ফাইলটিতে যান। একটি নতুন সম্পত্তি যুক্ত করুন exec.mainClassএবং শ্রেণীর হিসাবে এটির মান দিন যাতে আপনার মূল পদ্ধতি রয়েছে। আমার জন্য এটি ছিল DriverClassমধ্যে mainpkg। আপনার প্রকল্প অনুযায়ী এটি পরিবর্তন করুন। এখানে চিত্র বর্ণনা লিখুন

আপনার প্রকল্পের ফোল্ডারে এই নেভিগেটটি সম্পন্ন pom.xmlকরে এবং কমান্ড প্রম্পটে এটি চালান mvn exec:java। এটি মূল পদ্ধতি কল করা উচিত।


8

Pom.xML এ নতুন প্লাগইন যুক্ত করার দরকার নেই। এই কমান্ডটি চালান

mvn org.codehaus.mojo:exec-maven-plugin:1.5.0:java -Dexec.mainClass="com.example.Main" | grep -Ev '(^\[|Download\w+:)' 

দেখুন ম্যাভেন Exec প্লাগইন অধিক ব্যবহারের জন্য।


মাধ্যমে আরও আর্গুমেন্ট পাস-Dexec.args="...arg..."
sstn


2

clean package exec:java -P Class_Containing_Main_Method নিম্নলিখিত মাভেন সেটআপ সহ প্রকল্পটিতে আপনার কাছে একটিমাত্র মেইন পদ্ধতি (পিএসভিএম) থাকলে কমান্ডটিও একটি বিকল্প।

<properties></properties>বিভাগে বিভাগটি উল্লেখ করতে ভুলবেন না pom.xml:

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <java.main.class>com.test.service.MainTester</java.main.class>
</properties>

<plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>exec-maven-plugin</artifactId>
        <version>1.2.1</version>
        <configuration>
           <mainClass>${java.main.class}</mainClass>
        </configuration>
</plugin>

উপরের মাভেন সেটআপের সাথে এসটিএস রান কনফিগারেশন:

এখানে চিত্র বর্ণনা লিখুন


এটা আমার কাছে ঠিক দেখাচ্ছে না -পি 'প্রোফাইল' এর জন্য নয়? আপনি যদি কমান্ড লাইনে এটি নির্দিষ্ট করে থাকেন তবে কেন এটি প্লাগইন বৈশিষ্ট্যে রাখার দরকার আছে?
রুপ

@ রুপ হ্যাঁ, -Pপ্রোফাইলের জন্য। এটি ভাগ করে নেওয়া হয়েছে, কারণ এটি মাভেন প্রকল্প চালানোর বিকল্পও।
অভিজিৎ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.