আমি মাভেন ব্যবহার করে কীভাবে একটি প্রোগ্রাম চালাব?


120

আমি একটি জাভেন ক্লাস কার্যকর করার জন্য একটি ম্যাভেন গোলটি করতে চাই। আমি Makefileলাইনগুলি দিয়ে একটিতে স্থানান্তরিত করার চেষ্টা করছি :

neotest:
    mvn exec:java -Dexec.mainClass="org.dhappy.test.NeoTraverse"

এবং আমি বর্তমানে mvn neotestকি উত্পাদন করতে চাই make neotest

আমরাও Exec প্লাগইন ডকুমেন্টেশন কিংবা ম্যাভেন অ্যান্ট কর্ম পৃষ্ঠাগুলি সহজবোধ্য উদাহরণ কোনো ধরনের ছিল।

বর্তমানে, আমি এখানে আছি:

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>exec-maven-plugin</artifactId>
  <version>1.1</version>
  <executions><execution>
    <goals><goal>java</goal></goals>
  </execution></executions>
  <configuration>
    <mainClass>org.dhappy.test.NeoTraverse</mainClass>
  </configuration>
</plugin>

কমান্ড লাইন থেকে প্লাগইনটি কীভাবে ট্রিগার করতে হবে তা আমি জানি না।

উত্তর:


149

আপনি এক্সিকিউটিভ-মভেন-প্লাগইনটির জন্য সংজ্ঞাযুক্ত বিশ্বব্যাপী কনফিগারেশন সহ :

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>exec-maven-plugin</artifactId>
  <version>1.4.0</version>
  <configuration>
    <mainClass>org.dhappy.test.NeoTraverse</mainClass>
  </configuration>
</plugin>

invoking mvn exec:javaকমান্ড লাইন যা বর্গ চালানো কনফিগার করা প্লাগইন ডাকা হবে org.dhappy.test.NeoTraverse

সুতরাং, কমান্ড লাইন থেকে প্লাগইন ট্রিগার করতে, কেবল চালান:

mvn exec:java

এখন, আপনি যদি চালাতে চান exec:javaআপনার মান বিল্ড অংশ হিসেবে লক্ষ্য, আপনি একটি নির্দিষ্ট করার লক্ষ্য জুড়তে অনুমতি প্রয়োজন হবে ফেজ এর ডিফল্ট জীবনচক্র । এটি করার জন্য, phaseআপনি যে executionউপাদানটিতে লক্ষ্যটি বাঁধতে চান তা ঘোষণা করুন :

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>exec-maven-plugin</artifactId>
  <version>1.4</version>
  <executions>
    <execution>
      <id>my-execution</id>
      <phase>package</phase>
      <goals>
        <goal>java</goal>
      </goals>
    </execution>
  </executions>
  <configuration>
    <mainClass>org.dhappy.test.NeoTraverse</mainClass>
  </configuration>
</plugin>

এই উদাহরণ সহ, আপনার ক্লাসটি packageপর্বের সময় কার্যকর করা হবে । এটি কেবল একটি উদাহরণ, এটি আপনার প্রয়োজন অনুসারে খাপ খাইয়ে নিন। প্লাগইন সংস্করণ 1.1 এর সাথেও কাজ করে।


1
আমি প্রথমে বিভ্রান্ত হয়ে পড়েছিলাম: exec:javaস্কালা এবং ক্লোজার কোডের জন্যও ব্যবহার করা যেতে পারে, এটি প্রতি সেবার জাভা কোড হতে হবে না।
ডানফোল্ড

8
সংস্করণটি 1.4.0 হতে হবে
ওয়ালারি স্ট্রাচ

আমার জন্য কাজ! ধন্যবাদ!
mrddr

25

একাধিক প্রোগ্রাম কার্যকর করতে, আমার একটি profilesবিভাগও প্রয়োজন :

<profiles>
  <profile>
    <id>traverse</id>
    <activation>
      <property>
        <name>traverse</name>
      </property>
    </activation>
    <build>
      <plugins>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>exec-maven-plugin</artifactId>
          <configuration>
            <executable>java</executable>
            <arguments>
              <argument>-classpath</argument>
              <argument>org.dhappy.test.NeoTraverse</argument>
            </arguments>
          </configuration>
        </plugin>
      </plugins>
    </build>
  </profile>
</profiles>

এটি তখন কার্যকর হয়:

mvn exec:exec -Dtraverse

1
এই <argument>-classpath</argument><classpath />লাইন দিয়ে কি চলছে ? আমি এটা সঠিক মনে করি না।
গ্রিন জায়ান্ট

1
হ্যাঁ, সম্ভবত <classpath />ভুলভাবে ট্যাগটি সেখানে পেয়েছে এবং এটি সরানো উচিত। সুতরাং সেই লাইনটি কেবল দেখতে পাবেন:<argument>-classpath</argument>
দিমিত্রি কে

7
এটা কোন ভুল নয়। এটি ইঙ্গিত দিচ্ছে যে pom.xML এ উল্লিখিত নির্ভরতাগুলি শ্রেণীর পথের অংশ হিসাবে ব্যবহার করা উচিত।
ব্যবহারকারী 924272
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.