আমি কীভাবে আমার প্রকল্পের রানটাইম নির্ভরতাগুলি target/lib
ফোল্ডারে অনুলিপি করব ?
এখনই নয়, পরে ফোল্ডারের শুধু আমার প্রকল্পের বয়াম কিন্তু রানটাইম নির্ভরতা কেউই ধারণ করে।mvn clean install
target
আমি কীভাবে আমার প্রকল্পের রানটাইম নির্ভরতাগুলি target/lib
ফোল্ডারে অনুলিপি করব ?
এখনই নয়, পরে ফোল্ডারের শুধু আমার প্রকল্পের বয়াম কিন্তু রানটাইম নির্ভরতা কেউই ধারণ করে।mvn clean install
target
উত্তর:
এটি আমার পক্ষে কাজ করে:
<project>
...
<profiles>
<profile>
<id>qa</id>
<build>
<plugins>
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<phase>install</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>
excludeScope
বিকল্পটি যুক্ত করব ( maven.apache.org/plugins/maven-d dependency-plugin/… )।
<excludeScope>test</excludeScope>
ভিতরে যায় configuration
।
আপনি যা করতে চান তার উপর সর্বোত্তম পন্থা নির্ভর করে:
mvn install dependency:copy-dependencies
লক্ষ্য ফোল্ডারে তৈরি নির্ভরতা ডিরেক্টরি নিয়ে আমার জন্য কাজ করে। পছন্দ করি!
কটাক্ষপাত ম্যাভেন নির্ভরতা প্লাগইন , বিশেষভাবে, নির্ভরতা: কপি-নির্ভরতা লক্ষ্য । কটাক্ষপাত উদাহরণ শিরোনামের নীচে নির্ভরতা: কপি-নির্ভরতা Mojo । আউটপুট ডিরেক্টরি কনফিগারেশন বৈশিষ্ট্যকে $ {ভিত্তিক} / লক্ষ্য / লিবিতে সেট করুন (আমি বিশ্বাস করি, আপনাকে পরীক্ষা করতে হবে)।
আশাকরি এটা সাহায্য করবে.
মামেনের একটি সহজ এবং মার্জিত সমাধান যেখানে মাভেনের অন্য কোনও পর্যায় ব্যবহার না করে লক্ষ্য ডিরেক্টরিতে নির্ভরতা অনুলিপি করা দরকার (ওয়াদিনের সাথে কাজ করার সময় আমি এটি খুব দরকারী বলে মনে করেছি)।
সম্পূর্ণ pom উদাহরণ:
<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-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>groupId</groupId>
<artifactId>artifactId</artifactId>
<version>1.0</version>
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.1.1</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<phase>process-sources</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${targetdirectory}</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
তারপরে দৌড়াও mvn process-sources
জার ফাইলের নির্ভরতা পাওয়া যায় /target/dependency
আপনি যদি মাঝে মাঝে এই কাজটি করতে চান (এবং এইভাবে আপনার পিওএম পরিবর্তন করতে চান না), এই কমান্ড-লাইনটি ব্যবহার করে দেখুন:
এমভিএন নির্ভরতা: কপি-নির্ভরতা
আপনি যদি সর্বশেষ যুক্তি বাদ দেন তবে নির্ভরতাগুলি স্থাপন করা হয় target/dependencies
।
mvn dependency:copy-dependencies -DoutputDirectory=./lib
এরকম কিছু চেষ্টা করুন:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>MainClass</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<id>copy</id>
<phase>install</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>
${project.build.directory}/lib
</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
maven clean install
, তাহলে আপনি পাবেন lib
মধ্যেtarget
install
পর্বটি process-resources
এমন জায়গায় প্রতিস্থাপন করবে যাতে build
লক্ষ্যটি রান হওয়ার আগে নির্ভরতাগুলি অনুলিপি করা হয়
আপনার কেবলমাত্র পম.এক্সএমএল এর মধ্যে নিম্নলিখিত স্নিপেট দরকার build/plugins
:
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<phase>prepare-package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
উপরের package
অংশটি দৌড়ানোর সময় আপনি দৌড়াবেন
mvn clean package
এবং নির্ভরতাগুলি স্নিপেটে উল্লিখিত আউটপুট ডিরেক্টরিতে অনুলিপি করা হবে, lib
এই ক্ষেত্রে।
আপনি যদি মাঝে মাঝে এটি করতে চান তবে pom.xML এ কোনও পরিবর্তন প্রয়োজন হবে না। কেবল নিম্নলিখিতটি চালান:
mvn clean package dependency:copy-dependencies
ডিফল্ট অবস্থান, যা ওভাররাইড করতে ${project.build.directory}/dependencies
, একটি সিস্টেম সম্পত্তি যোগ নামে outputDirectory
, অর্থাৎ
-DoutputDirectory=${project.build.directory}/lib
আপনি যদি মেইনক্লাসের জন্য অনুরোধ করতে তার সমস্ত নির্ভরতা এবং কিছু স্ক্রিপ্টের সাথে একসাথে আপনার অ্যাপ্লিকেশন জারের একটি বান্ডিল সরবরাহ করতে চান তবে অ্যাপসেম্বার-ম্যাভেন-প্লাগইনটি দেখুন ।
নিম্নলিখিত কনফিগারেশন (ক উত্পন্ন পথ সব নির্ভরতা বয়াম উল্লেখ সঙ্গে অ্যাপ্লিকেশন প্রবর্তন করা উইন্ডো এবং লিনাক্সের জন্য স্ক্রিপ্ট উত্পন্ন করবে, নীচের লক্ষ্য / appassembler একটি liberal এর সংক্ষিপ্ত রূপ ফোল্ডারের মধ্যে সব নির্ভরতা (ডাউনলোড)। সমাবেশ প্লাগইন তারপর পুরো প্যাকেজ ব্যবহার করা যেতে পারে অ্যাপসেম্বেবল ডিরেক্টরিটি একটি জিপের সাথে ইনস্টল করা / জার সহ ভাণ্ডারগুলিতে স্থাপন করা হয়।
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>appassembler-maven-plugin</artifactId>
<version>1.0</version>
<executions>
<execution>
<id>generate-jsw-scripts</id>
<phase>package</phase>
<goals>
<goal>generate-daemons</goal>
</goals>
<configuration>
<!--declare the JSW config -->
<daemons>
<daemon>
<id>myApp</id>
<mainClass>name.seller.rich.MyMainClass</mainClass>
<commandLineArguments>
<commandLineArgument>start</commandLineArgument>
</commandLineArguments>
<platforms>
<platform>jsw</platform>
</platforms>
</daemon>
</daemons>
<target>${project.build.directory}/appassembler</target>
</configuration>
</execution>
<execution>
<id>assemble-standalone</id>
<phase>integration-test</phase>
<goals>
<goal>assemble</goal>
</goals>
<configuration>
<programs>
<program>
<mainClass>name.seller.rich.MyMainClass</mainClass>
<!-- the name of the bat/sh files to be generated -->
<name>mymain</name>
</program>
</programs>
<platforms>
<platform>windows</platform>
<platform>unix</platform>
</platforms>
<repositoryLayout>flat</repositoryLayout>
<repositoryName>lib</repositoryName>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2-beta-4</version>
<executions>
<execution>
<phase>integration-test</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<descriptors>
<descriptor>src/main/assembly/archive.xml</descriptor>
</descriptors>
</configuration>
</execution>
</executions>
</plugin>
ডাইরেক্টোট্রিটিকে জিপ হিসাবে প্যাকেজ করার জন্য অ্যাসেম্বলি বর্ণনাকারী (এসসিআর / প্রধান / সমাবেশে) হ'ল:
<assembly>
<id>archive</id>
<formats>
<format>zip</format>
</formats>
<fileSets>
<fileSet>
<directory>${project.build.directory}/appassembler</directory>
<outputDirectory>/</outputDirectory>
</fileSet>
</fileSets>
</assembly>
আপনি যদি আপনার প্রকল্পটি যুদ্ধ বা কানের ধরণের মেভেন করেন তবে নির্ভরতাগুলি অনুলিপি করে।
আপনি একটি উবার জার তৈরি করতে শেড প্লাগইন ব্যবহার করতে পারেন যাতে আপনি আপনার সমস্ত তৃতীয় পক্ষের নির্ভরতা বান্ডিল করতে পারেন।
ইতিমধ্যে সংক্ষেপে যা বলা হয়েছে তা বানানের জন্য to আমি একটি এক্সিকিউটেবল জেআর ফাইল তৈরি করতে চেয়েছিলাম যা আমার কোডের সাথে আমার নির্ভরতা অন্তর্ভুক্ত করে। এটি আমার পক্ষে কাজ করেছে:
(1) পমটিতে <বিল্ড> <প্লাগইনস> এর অধীনে আমি অন্তর্ভুক্ত করেছি:
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2-beta-5</version>
<configuration>
<archive>
<manifest>
<mainClass>dk.certifikat.oces2.some.package.MyMainClass</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
(২) এমভিএন কমপাইল অ্যাসেম্বলি চালাচ্ছে: সমাবেশটি প্রকল্পের টার্গেট ডিরেক্টরিতে কাঙ্ক্ষিত মাই-প্রজেক্ট -১.০-এসএনএপিএসএইচটি-জার-নির্ভরতা নিয়ে তৈরি করে jar
(3) আমি জাভা-জার-প্রজেক্ট -১০-এসএনএপশট-জার-নির্ভরতার সাথে জার দিয়ে চালিয়েছি।
ভারী নির্ভরতা এম্বেড করার জন্য এটি একটি ভারী সমাধান, তবে মাভেনের এসেম্বলি প্লাগইন আমার পক্ষে কৌশলটি কাজ করে।
@ ধনী বিক্রেতার উত্তরটি কার্যকর করা উচিত, যদিও সহজ ক্ষেত্রে আপনার ব্যবহারের গাইড থেকে এই অংশটি নেওয়া দরকার :
<project>
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2.2</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
</plugins>
</build>
</project>
যদি আপনার একটিগ্রহে টমক্যাট সার্ভারে চলার সময় নির্ভরতা সম্পর্কিত সমস্যা যদি WEB-INF / lib ফাইলের মধ্যে উপস্থিত না হয় তবে এটি একবার দেখুন:
আপনাকে কেবল প্রোজেক্ট প্রোপার্টি> ডিপ্লোয়মেন্ট অ্যাসেমব্লিতে ম্যাভেন নির্ভরতা যুক্ত করতে হয়েছিল।