কেউ কি আমাকে অ্যান্ট এবং মাভেনের পার্থক্য বলতে পারে? আমি কখনও ব্যবহার করিনি। আমি বুঝতে পারি যে তারা জাভা প্রকল্পগুলির বিল্ডিংটি স্বয়ংক্রিয় করতে ব্যবহৃত হয়, তবে কোথা থেকে শুরু করব তা আমি জানি না।
কেউ কি আমাকে অ্যান্ট এবং মাভেনের পার্থক্য বলতে পারে? আমি কখনও ব্যবহার করিনি। আমি বুঝতে পারি যে তারা জাভা প্রকল্পগুলির বিল্ডিংটি স্বয়ংক্রিয় করতে ব্যবহৃত হয়, তবে কোথা থেকে শুরু করব তা আমি জানি না।
উত্তর:
ইন ম্যাভেন: নির্দিষ্ট নির্দেশিকা , আমি ভূমিকা অধ্যায় শিরোনাম মধ্যে ম্যাভেন এবং অ্যান্ট এর ভিন্নতা নিয়ে লিখেছিলেন "পিপীলিকা এবং ম্যাভেন মধ্যে পার্থক্য" । এখানে একটি উত্তর যা অতিরিক্ত কিছু নোট সহ সেই পরিচিতির তথ্যের সংমিশ্রণ।
একটি সাধারণ তুলনা
আমি কেবল আপনাকে এই ধারণাটি চিত্রিত করার জন্যই এটি দেখিয়ে দিচ্ছি যে, মৌলিক স্তরে, মাভেন অন্তর্নিহিত সম্মেলনগুলি করেছেন। এখানে একটি সরল পিঁপড়া বিল্ড ফাইল রয়েছে:
<project name="my-project" default="dist" basedir=".">
<description>
simple example build file
</description>
<!-- set global properties for this build -->
<property name="src" location="src/main/java"/>
<property name="build" location="target/classes"/>
<property name="dist" location="target"/>
<target name="init">
<!-- Create the time stamp -->
<tstamp/>
<!-- Create the build directory structure used by compile -->
<mkdir dir="${build}"/>
</target>
<target name="compile" depends="init"
description="compile the source " >
<!-- Compile the java code from ${src} into ${build} -->
<javac srcdir="${src}" destdir="${build}"/>
</target>
<target name="dist" depends="compile"
description="generate the distribution" >
<!-- Create the distribution directory -->
<mkdir dir="${dist}/lib"/>
<!-- Put everything in ${build} into the MyProject-${DSTAMP}.jar file
-->
<jar jarfile="${dist}/lib/MyProject-${DSTAMP}.jar" basedir="${build}"/>
</target>
<target name="clean"
description="clean up" >
<!-- Delete the ${build} and ${dist} directory trees -->
<delete dir="${build}"/>
<delete dir="${dist}"/>
</target>
</project>
পিঁপড়ার এই সাধারণ উদাহরণে, আপনি কীভাবে পিঁপড়াকে ঠিক কী করতে হবে তা আপনাকে দেখতে হবে। একটি সংকলন লক্ষ্য রয়েছে যা জাভাক টাস্ককে অন্তর্ভুক্ত করে src / main / java ডিরেক্টরিতে উত্সটি লক্ষ্য / শ্রেণি ডিরেক্টরিতে সংকলন করে। আপনাকে এন্টিকে বলতে হবে যে আপনার উত্সটি ঠিক কোথায়, আপনি ফলাফলের বাইকোডটি কোথায় সংরক্ষণ করতে চান এবং কীভাবে এই সমস্তটি একটি জেআর ফাইলে প্যাকেজ করবেন। যদিও সাম্প্রতিক কিছু উন্নয়ন রয়েছে যা পিঁপড়াকে কম প্রক্রিয়াজাতকরণ করতে সহায়তা করে, পিঁপড়ার সাথে একজন বিকাশকারীর অভিজ্ঞতা এক্সএমএলে লিখিত পদ্ধতিগত ভাষার কোডিংয়ে থাকে।
পূর্ববর্তী পিঁপড়ের উদাহরণটি ম্যাভেন উদাহরণের সাথে বিপরীত করুন। মাভেনে, কিছু জাভা উত্স থেকে জেআর ফাইল তৈরি করতে, আপনাকে কেবল একটি সাধারণ পম.এক্সএমএল তৈরি করতে হবে, আপনার উত্স কোডটি $ {ভিত্তিক} / এসসিআর / মেইন / জাভাতে স্থাপন করুন এবং তারপরে কমান্ড লাইন থেকে এমভিএন ইনস্টল চালান is । ম্যাভেন pom.xML উদাহরণ যা একই ফলাফল অর্জন করে।
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>org.sonatype.mavenbook</groupId>
<artifactId>my-project</artifactId>
<version>1.0</version>
</project>
আপনার pom.xml এ যা আপনার প্রয়োজন। কমান্ড লাইন থেকে এমভিএন ইনস্টল চালানো সংস্থানগুলি, সংকলন উত্স, ইউনিট পরীক্ষাগুলি কার্যকর করতে, একটি জেআর তৈরি করবে এবং অন্যান্য প্রকল্পগুলিতে পুনরায় ব্যবহারের জন্য স্থানীয় সংগ্রহস্থলে জেআর ইনস্টল করবে। কোনও পরিবর্তন ছাড়াই, আপনি এমভিএন সাইট চালাতে পারেন এবং তারপরে লক্ষ্য / সাইটে একটি সূচি html ফাইল খুঁজে পেতে পারেন যা জাভডকের লিঙ্ক এবং আপনার উত্স কোড সম্পর্কে কয়েকটি প্রতিবেদন রয়েছে।
স্বীকার করা, এটি সহজতম সম্ভাব্য উদাহরণ প্রকল্প। এমন একটি প্রকল্প যার মধ্যে কেবল উত্স কোড থাকে এবং এটি একটি জেআর উত্পাদন করে। এমন একটি প্রকল্প যা মাভেন সম্মেলন অনুসরণ করে এবং কোনও নির্ভরতা বা কাস্টমাইজেশন প্রয়োজন হয় না। যদি আমরা আচরণটি কাস্টমাইজ করা শুরু করতে চাইতাম, তবে আমাদের pom.xML আকারে বাড়তে চলেছে এবং সবচেয়ে বড় প্রকল্পে আপনি খুব জটিল ম্যাভেন পিওএমগুলির সংগ্রহ দেখতে পারেন যা প্লাগইন কাস্টমাইজেশন এবং নির্ভরতা ঘোষণার জন্য একটি দুর্দান্ত চুক্তি রয়েছে। তবে, আপনার প্রকল্পের পিওএম ফাইলগুলি আরও বেশি পরিমাণে পরিণত হওয়ার পরেও তারা পিপড়া ব্যবহার করে একই আকারের প্রকল্পের বিল্ড ফাইল থেকে সম্পূর্ণ ভিন্ন ধরণের তথ্য ধারণ করে। ম্যাভেন পিওএমগুলিতে ঘোষণা রয়েছে: "এটি একটি জএআর প্রকল্প", এবং "উত্স কোডটি এসসিআর / প্রধান / জাভাতে রয়েছে"। পিপড়া বিল্ড ফাইলগুলিতে স্পষ্ট নির্দেশাবলী থাকে: "এটি প্রকল্প", "src/main/java
"," javac
এই ডিরেক্টরিটির বিরুদ্ধে চালান "," ফলাফলগুলি রাখুন target/classses
"," .... থেকে একটি জেআর তৈরি করুন .... "ইত্যাদি etc. যেখানে পিঁপড়াটিকে প্রক্রিয়াটি সম্পর্কে স্পষ্ট করে বলতে হয়েছিল, সেখানে মাভেনের কাছে কিছু" বিল্ট-ইন "ছিল was এটি কেবল জানত যে উত্স কোডটি কোথায় ছিল এবং কীভাবে এটি প্রক্রিয়া করা উচিত।
উচ্চ স্তরের তুলনা
এই উদাহরণে পিঁপড়া এবং মাভেনের মধ্যে পার্থক্য? অ্যান্ট ...
মাভেন কোথায় ...
mvn install
। এই কমান্ডটি মাভেনকে লাইফসাইলে না পৌঁছে অবধি ধারাবাহিক পদক্ষেপের একটি ধারাবাহিকটি সম্পাদন করতে বলেছিল। জীবনচক্রের মাধ্যমে এই যাত্রার পার্শ্ব-প্রতিক্রিয়া হিসাবে, মাভেন কয়েকটি ডিফল্ট প্লাগইন লক্ষ্যগুলি কার্যকর করেছিলেন যা সংকলন এবং একটি জেআর তৈরির মতো কাজগুলি করেছিল।আইভির কী হবে?
ঠিক আছে, সুতরাং স্টিভ লৌরানের মতো কেউ সেই তুলনাটি পড়তে এবং ফাউল কল করতে চলেছে। তিনি কীভাবে উত্তরটি আইভী নামক কিছুটিকে পুরোপুরি উপেক্ষা করে এবং এন্টির আরও সাম্প্রতিক প্রকাশগুলিতে পিঁপড়াটি যুক্তি যুক্তির পুনরায় ব্যবহার করতে পারে তা এই বিষয়ে কথা বলতে যাচ্ছেন। এটা সত্য. আপনার যদি অ্যান্ট + অ্যান্টলিবস + আইভী ব্যবহার করে স্মার্ট লোকের একগুচ্ছ থাকে, আপনি কাজ করে এমন একটি ভাল ডিজাইন তৈরি শেষ করবেন। তবুও, আমি খুব দৃ Ma়ভাবে নিশ্চিত হয়েছি যে মাভেন বুদ্ধিমান হয়েছে, আমি আনন্দের সাথে আন্ত + আইভিকে এমন একটি প্রকল্প দলের সাথে ব্যবহার করব যার খুব ধারালো বিল্ড ইঞ্জিনিয়ার রয়েছে। বলা হচ্ছে, আমি মনে করি আপনি জেটি প্লাগইনের মতো অনেক মূল্যবান প্লাগইন হারিয়ে ফেলবেন এবং আপনি পুরো কাজটি শেষ করবেন যা আপনাকে সময়ের সাথে করার দরকার নেই।
ম্যাভেন বনাম পিঁপড়ার চেয়েও গুরুত্বপূর্ণ
ম্যাভেন একটি ফ্রেমওয়ার্ক, পিঁপড়া একটি টুলবক্স box
মাভেন একটি পূর্ব-নির্মিত রাস্তা গাড়ি, যেখানে পিঁপড়া গাড়ির যন্ত্রাংশের একটি সেট। পিঁপড়ার সাহায্যে আপনাকে নিজের গাড়ি তৈরি করতে হবে, তবে কমপক্ষে কোনও অফ-রোড ড্রাইভিং করার প্রয়োজন হলে আপনি সঠিক ধরণের গাড়ি তৈরি করতে পারেন।
এটি অন্য উপায়ে বলতে গেলে, মাভেন হ'ল একটি কাঠামো যেখানে পিঁপড়া একটি সরঞ্জাম বাক্স। যদি আপনি ফ্রেমওয়ার্কের সীমার মধ্যে কাজ করে সন্তুষ্ট হন তবে মাভেন ঠিকঠাক করবেন। আমার সমস্যাটি হ'ল আমি ফ্রেমওয়ার্কের সীমানায় intoুকে পড়েছিলাম এবং এটি আমাকে ছাড়তে দেয় না।
এক্সএমএল ভার্বোসিটি
টোব্রায়েন এমন এক ব্যক্তি যিনি মাভেন সম্পর্কে অনেক কিছু জানেন এবং আমি মনে করি তিনি দুটি পণ্যগুলির মধ্যে খুব ভাল, সৎ তুলনা করেছিলেন। তিনি একটি সাধারণ ম্যাভেন পম.এক্সএমএলকে একটি সরল পিঁপড়া বিল্ড ফাইলের সাথে তুলনা করেছিলেন এবং তিনি কীভাবে মাভেন প্রকল্পগুলি আরও জটিল হয়ে উঠতে পারেন তার উল্লেখ করেছিলেন। আমি মনে করি যে আপনি কয়েকটি সাধারণ বাস্তব-প্রকল্পে সম্ভবত এমন কয়েকটি ফাইলের তুলনা দেখেছেন যা আপনি দেখতে পাচ্ছেন। নীচের ফাইলগুলি বহু-মডিউল বিল্ডে একটি একক মডিউল উপস্থাপন করে।
প্রথমত, ম্যাভেন ফাইল:
<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-4_0_0.xsd">
<parent>
<groupId>com.mycompany</groupId>
<artifactId>app-parent</artifactId>
<version>1.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>persist</artifactId>
<name>Persistence Layer</name>
<dependencies>
<dependency>
<groupId>com.mycompany</groupId>
<artifactId>common</artifactId>
<scope>compile</scope>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.mycompany</groupId>
<artifactId>domain</artifactId>
<scope>provided</scope>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate</artifactId>
<version>${hibernate.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>${commons-lang.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
<version>${spring.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.dbunit</groupId>
<artifactId>dbunit</artifactId>
<version>2.2.3</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>${testng.version}</version>
<scope>test</scope>
<classifier>jdk15</classifier>
</dependency>
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>${commons-dbcp.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc</artifactId>
<version>${oracle-jdbc.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.easymock</groupId>
<artifactId>easymock</artifactId>
<version>${easymock.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
এবং সমতুল্য পিঁপড়া ফাইল:
<project name="persist" >
<import file="../build/common-build.xml" />
<path id="compile.classpath.main">
<pathelement location="${common.jar}" />
<pathelement location="${domain.jar}" />
<pathelement location="${hibernate.jar}" />
<pathelement location="${commons-lang.jar}" />
<pathelement location="${spring.jar}" />
</path>
<path id="compile.classpath.test">
<pathelement location="${classes.dir.main}" />
<pathelement location="${testng.jar}" />
<pathelement location="${dbunit.jar}" />
<pathelement location="${easymock.jar}" />
<pathelement location="${commons-dbcp.jar}" />
<pathelement location="${oracle-jdbc.jar}" />
<path refid="compile.classpath.main" />
</path>
<path id="runtime.classpath.test">
<pathelement location="${classes.dir.test}" />
<path refid="compile.classpath.test" />
</path>
</project>
টোব্রায়েন তার উদাহরণটি ব্যবহার করে দেখিয়েছিলেন যে মাভেন অন্তর্নিহিত কনভেনশন করেছেন তবে এর অর্থ এই নয় যে আপনি কম এক্সএমএল লিখেছেন। আমি বিপরীতটি সত্য বলে খুঁজে পেয়েছি। Pom.xML বিল্ড.এক্সএমএল থেকে 3 গুণ বেশি লম্বা এবং এটি সম্মেলনগুলি থেকে বিপথগামী না হয়ে। আসলে, আমার মাভেন উদাহরণটি অতিরিক্ত 54 টি লাইন ছাড়াই দেখানো হয়েছে যা প্লাগইনগুলি কনফিগার করার জন্য প্রয়োজনীয় ছিল। সেই pom.xML একটি সাধারণ প্রকল্পের জন্য। আপনি অতিরিক্ত প্রয়োজনীয়তা যুক্ত করতে শুরু করলে এক্সএমএলটি সত্যই তাৎপর্যপূর্ণভাবে বৃদ্ধি পেতে শুরু করে, যা অনেক প্রকল্পের জন্য সাধারণের বাইরে নয়।
তবে আপনাকে পিঁপড়াকে কী করতে হবে তা জানাতে হবে
উপরে আমার পিঁপড়া উদাহরণ অবশ্যই সম্পূর্ণ নয়। আমাদের এখনও পরিষ্কার, সংকলন, পরীক্ষা ইত্যাদির লক্ষ্যে নির্ধারিত লক্ষ্যগুলি নির্ধারণ করতে হবে এগুলি একটি সাধারণ বিল্ড ফাইলে সংজ্ঞায়িত করা হয় যা মাল্টি-মডিউল প্রকল্পের সমস্ত মডিউল দ্বারা আমদানি করা হয়। যা আমাকে এই বিষয়টিতে নিয়ে যায় যে কীভাবে এই সমস্ত স্টাফটি স্পষ্টভাবে পিঁপড়ে লিখতে হবে যেখানে এটি মাভেনে ঘোষিত।
সত্য, এটি আমার সময় সাশ্রয় করবে যদি আমাকে এই পিঁপড়া লক্ষ্যগুলি স্পষ্টভাবে লিখতে না হয়। তবে কত সময়? আমি এখন যে সাধারণ বিল্ড ফাইলটি ব্যবহার করি তা হ'ল এটি আমি 5 বছর আগে লিখেছিলাম কেবল তখন থেকে কেবলমাত্র কিছু সংশোধন নিয়ে। মাভেনের সাথে আমার 2 বছরের পরীক্ষা-নিরীক্ষার পরে, আমি পুরানো পিঁপড়া বিল্ড ফাইলটি পায়খানা থেকে বের করে এনে ধুলো ফেলেছি এবং এটিকে আবার কাজে লাগিয়েছি। আমার জন্য, আন্তিকে কী করতে হবে তা স্পষ্টভাবে জানাতে হবে এর ব্যয়টি পাঁচ বছরের একটি সময়কালে এক সপ্তাহেরও কম সময় জুড়েছে।
জটিলতা
পরবর্তী উল্লেখযোগ্য পার্থক্য যা আমি উল্লেখ করতে চাই তা হ'ল জটিলতা এবং আসল-বিশ্ব প্রভাব এটি। ম্যাভেন বিল্ড প্রসেস তৈরি ও পরিচালনার দায়িত্ব দেওয়া বিকাশকারীদের কাজের চাপ হ্রাস করার অভিপ্রায় নিয়ে নির্মিত হয়েছিল। এটি করার জন্য এটি জটিল হতে হবে। দুর্ভাগ্যক্রমে জটিলতা তাদের লক্ষ্যযুক্ত লক্ষ্যটিকে প্রত্যাখ্যান করে।
অ্যান্টের সাথে তুলনা করা হলে, মাভেন প্রকল্পের বিল্ড গাই আরও বেশি সময় ব্যয় করবে:
বিপরীতে:
ঘনিষ্ঠতা
আর একটি পার্থক্য হ'ল পরিচিতি। নতুন বিকাশকারীদের সর্বদা গতিতে উঠতে সময় প্রয়োজন। বিদ্যমান পণ্যগুলির সাথে পরিচিতি সে ক্ষেত্রে সহায়তা করে এবং মাভেন সমর্থকরা যথাযথভাবে দাবি করেন যে এটি ম্যাভেনের উপকার। অবশ্যই, পিঁপড়ের নমনীয়তাটির অর্থ হল আপনার পছন্দসই কনভেনশন আপনি তৈরি করতে পারবেন। সুতরাং আমি যে কনভেনশনটি ব্যবহার করি তা হ'ল আমার উত্স ফাইলগুলি ডিরেক্টরি ডিরেক্টরিতে এসসিআর / প্রধান / জাভা স্থাপন করা। আমার সংকলিত ক্লাস লক্ষ্য / ক্লাস নামের একটি ডিরেক্টরিতে যায়। চেনা লাগছে না।
আমি মাভেন দ্বারা ব্যবহৃত ডিরেক্টরি কাঠামো পছন্দ করি। আমি এটা জ্ঞান করে তোলে মনে করি। এছাড়াও তাদের বিল্ড লাইফাইসাইকেল। সুতরাং আমি আমার পিঁপড়া বিল্ডগুলিতে একই সম্মেলনগুলি ব্যবহার করি। এটি বোঝার জন্য নয় কেবল এটিই নয় কারণ এটি যে কেউ এর আগে মাভেনকে ব্যবহার করেছে তার সাথে পরিচিত হবে।
pom.xml
গুলি প্রসারণ এড়াতে , আমি তাদের বেশিরভাগ এক্সএসএলটি এর মাধ্যমে উত্পন্ন করি।
পিঁপড়া মূলত একটি বিল্ড হাতিয়ার।
ম্যাভেন একটি প্রকল্প এবং নির্ভরতা পরিচালনার সরঞ্জাম (অবশ্যই আপনার প্রকল্পটিও তৈরি করে)।
আপনি যদি মাভেনকে এড়াতে চান তবে পিপীলিকা + আইভির একটি খুব ভাল সমন্বয়।
কেবল আরও কিছু পার্থক্য তালিকা করতে:
হালনাগাদ:
এটি ম্যাভেন থেকে এসেছে : সংজ্ঞা নির্দেশিকা । দুঃখিত, আমি এটি উদ্ধৃত করতে পুরোপুরি ভুলে গেছি।
মাভেন না পিঁপড়ে? এটি একটি খুব অনুরূপ প্রশ্ন, যা আপনাকে আপনার প্রশ্নের উত্তর দিতে সহায়তা করবে।
মাভেন কী? অফিসিয়াল সাইটে।
সম্পাদনা: নতুন / গ্রিনফিল্ড প্রকল্পের জন্য, আমি মাভেন ব্যবহার করার পরামর্শ দিচ্ছি: "কনফিগারেশন ওভার কনফিগারেশন" আপনাকে বিল্ড এবং ডিপ্লোয়মেন্ট স্ক্রিপ্টগুলি লেখার ক্ষেত্রে এবং সেটআপ করার ক্ষেত্রে একটি শালীন সময় সাশ্রয় করবে। আপনি যখন পিঁপড়া ব্যবহার করেন তখন বিল্ড স্ক্রিপ্ট দৈর্ঘ্য এবং জটিলতায় সময়ের সাথে সাথে বৃদ্ধি পেতে থাকে। বিদ্যমান প্রকল্পগুলির জন্য, তাদের কনফিগারেশন / লেআউটটি মাভেন সিস্টেমে জুতো ছড়িয়ে দেওয়া কঠিন can
ম্যাভেন উভয় নির্ভরতা পরিচালনার সরঞ্জাম হিসাবে কাজ করে - এটি কোনও কেন্দ্রীয় সংগ্রহশালা বা আপনার স্থাপন করা একটি সংগ্রহস্থল থেকে জারগুলি পুনরুদ্ধার করতে - এবং একটি ঘোষিত বিল্ড সরঞ্জাম হিসাবে ব্যবহার করা যেতে পারে। একটি "ঘোষিত" বিল্ড টুল এবং আরও বেশি traditionalতিহ্যবাহী পিঁপড়া বা মেকের মধ্যে পার্থক্য হ'ল কী করা দরকার তা কনফিগার করা, এটি কীভাবে হয় না। উদাহরণস্বরূপ, আপনি একটি খাঁটি স্ক্রিপ্টে বলতে পারেন যে কোনও প্রকল্পকে ওয়ার ফাইল হিসাবে প্যাকেজ করা উচিত, এবং ম্যাভেন কীভাবে এটি পরিচালনা করতে জানে।
মাভেন এর "ঘোষণা" অর্জনের জন্য কীভাবে প্রকল্পের ডিরেক্টরিগুলি নির্ধারণ করা হয় সে সম্পর্কে কনভেনশনের উপর নির্ভর করে। উদাহরণস্বরূপ, এটিতে আপনার মূল কোডটি কোথায় রাখবেন, কোথায় আপনার ওয়েব.এক্সএমএল স্থাপন করতে হবে, আপনার ইউনিট পরীক্ষা করা হবে এবং এর জন্য একটি কনভেনশন রয়েছে তবে আপনার প্রয়োজন হলে সেগুলি পরিবর্তন করার ক্ষমতাও দেয়।
আপনার মনে রাখতে হবে যে মাভেনের মধ্যে থেকে পিপীলিকা কমান্ডগুলি চালনার জন্য একটি প্লাগইন রয়েছে:
http://maven.apache.org/plugins/maven-ant-plugin/
এছাড়াও, ম্যাভেনের প্রত্নতাত্ত্বিক ধরণগুলি খুব দ্রুত একটি প্রকল্পের সাথে শুরু করা তৈরি করে। উদাহরণস্বরূপ, একটি উইকেট আরচাইটিপ রয়েছে, যা একটি সম্পূর্ণ, প্রস্তুত-তে-চালিত হ্যালো ওয়ার্ল্ড-টাইপ প্রজেক্ট পাওয়ার জন্য আপনি চালাচ্ছেন এমন একটি মাভেন কমান্ড সরবরাহ করে।
আমি এমন কোনও ব্যক্তিকে নিতে পারি যা কখনও পিঁপড়াকে দেখেনি - এর build.xml
গুলি যুক্তিসঙ্গতভাবে ভাল লেখা আছে - এবং তারা বুঝতে পারে কী চলছে। আমি সেই একই ব্যক্তিকে নিতে পারি এবং তাদের একটি ম্যাভেন পিওএম দেখাতে পারি এবং কী চলছে তা তাদের কোনও ধারণা নেই।
একটি ইঞ্জিনিয়ারিং সংস্থায় যে বিশাল, লোকেরা পিঁপড়ের ফাইলগুলি বড় এবং অযৌক্তিকভাবে পরিণত হওয়ার বিষয়ে লিখেন। আমি এই ধরণের লিখেছি এবং পিপীলিকার স্ক্রিপ্টগুলি পরিষ্কার করেছি । আপনার এগিয়ে যাওয়া এবং টেমপ্লেটের একটি সেট ডিজাইন করার দরকার যা 3+ বছরের সময়কালে পরিবর্তনের প্রতিক্রিয়া জানাতে পারে এবং স্কেল করতে পারে তা সত্যই বুঝতে পেরেছি।
আপনার যদি একটি সহজ প্রকল্প না থাকে তবে ম্যাভেন কনভেনশনগুলি এবং জিনিসগুলি সম্পন্ন করার জন্য মাভেনের উপায় শিখতে কাজটি বেশ খানিকটা কাজ।
দিনের শেষে আপনি পিঁপড়া বা মাভেনের সাথে প্রকল্পের সূচনাটিকে কোনও ফ্যাক্টর হিসাবে বিবেচনা করতে পারবেন না: এটি সত্যই মালিকানার মোট ব্যয়। প্রতিষ্ঠানের জন্য কয়েক বছর ধরে এটির বিল্ড সিস্টেম বজায় রাখতে এবং প্রসারিত করতে যা গ্রহণ করা হয় তা অন্যতম প্রধান কারণ যা বিবেচনা করা উচিত is
বিল্ড সিস্টেমের সর্বাধিক গুরুত্বপূর্ণ বিষয়গুলি হ'ল বিল্ড রেসিপিটি প্রকাশের ক্ষেত্রে নির্ভরতা পরিচালনা এবং নমনীয়তা। এটি ভাল করার সময় কিছুটা স্বজ্ঞাত হতে হবে।
আমি বলব এটি আপনার প্রকল্পের আকারের উপর নির্ভর করে ... ব্যক্তিগতভাবে, আমি মাভেনকে এমন সরল প্রকল্পগুলির জন্য ব্যবহার করতাম যার জন্য সহজবোধ্য সংকলন, প্যাকেজিং এবং স্থাপনার প্রয়োজন। যত তাড়াতাড়ি আপনার আরও কিছু জটিল জিনিস করা দরকার (অনেক নির্ভরতা, ম্যাপিং ফাইল তৈরি করা ...), আমি পিপড়ে স্যুইচ করব ...
মাভেন সাধারণভাবে ব্যবহৃত ওপেন সোর্স প্রকল্পগুলির একটি বৃহৎ সংগ্রহস্থল রাখে। বিল্ড চলাকালীন ম্যাভেন আপনার জন্য এই নির্ভরতাগুলি ডাউনলোড করতে পারে (পাশাপাশি আপনার নির্ভরতা নির্ভরতা :)) একটি প্রকল্প তৈরির এই অংশটিকে আরও কিছুটা পরিচালনাযোগ্য করে তুলতে।