গিটহাবে আপনার ম্যাভেন সংগ্রহস্থল

বিকাশকারীরা তাদের লাইব্রেরি GitHub-এ আপলোড করতে পারে, যার জন্য এটিতে একটি বিশেষ সাইট-মাভেন-প্লাগইন প্লাগইন রয়েছে । আসুন এর ব্যবহারের একটি উদাহরণ দেখি:

<project>
    <properties>
        <github.global.server>github</github.global.server>
        <github.maven-plugin>0.9</github.maven-plugin>
    </properties>
 
    <distributionManagement>
    	<repository>
            <id>internal.repo</id>
        	<name>Temporary Staging Repository</name>
            <url>file://${project.build.directory}/mvn-repo</url>
    	</repository>
    </distributionManagement>
 
    <build>
    	<plugins>
        	<plugin>
                <artifactId>maven-deploy-plugin</artifactId>
    	        <version>2.8.1</version>
            	<configuration>
                    <altDeploymentRepository>
                        internal.repo::default::file://${project.build.directory}/mvn-repo
                    </altDeploymentRepository>
            	</configuration>
        	</plugin>
        	<plugin>
                <groupId>com.github.github</groupId>
                <artifactId>site-maven-plugin</artifactId>
                <version>${github.maven-plugin}</version>
            	<configuration>
                	<message>Maven artifacts for ${project.version}</message>
                    <noJekyll>true</noJekyll>
                    <outputDirectory>${project.build.directory}/mvn-repo</outputDirectory>
                	<branch>refs/heads/mvn-repo</branch>
                    <includes>**/*</includes>
                	<repositoryName>SuperLibrary</repositoryName>
                	<repositoryOwner>codegymu-student</repositoryOwner>
            	</configuration>
            	<executions>
                	<execution>
                    	<goals>
                            <goal>site</goal>
                    	</goals>
                        <phase>deploy</phase>
                	</execution>
            	</executions>
        	</plugin>
    	</plugins>
    </build>
 
</project>

চলুন দেখি এখানে কি লেখা আছে।

একটি অস্থায়ী স্থানীয় সংগ্রহস্থল তৈরি নীল রঙে হাইলাইট করা হয়েছে। প্রযুক্তিগতভাবে এটি শুধুমাত্র একটি ফোল্ডার, তবে এটিকে একটি পৃথক সংগ্রহস্থল হিসাবে বিবেচনা করার জন্য আমাদের ম্যাভেন প্রয়োজন।

আমরা maven-deploy-plugin প্লাগইন চালু করার সময় লাল রঙে হাইলাইট করেছি , যেখানে আমরা ইঙ্গিত দিয়েছিলাম যে সংকলিত লাইব্রেরিটি এই অস্থায়ী সংগ্রহস্থলে স্থাপন করা উচিত।

এবং অবশেষে, সাইট-মাভেন-প্লাগইন প্লাগইনটি সবুজ রঙে হাইলাইট করা হয়েছে , যা রিপোজিটরি থেকে সমস্ত ফাইল নিয়ে গিটহাবের কাছে কমিট করবে। এখানে কিছু ব্যাখ্যা প্রয়োজন। সমস্ত পরামিতি দুটি গ্রুপে বিভক্ত: কি পূরণ করতে হবে এবং কোথায় পূরণ করতে হবে।

আমরা যা পূরণ করি:
  • outputDirectory - ডিরেক্টরি যেখানে প্রতিশ্রুতি জন্য ফাইল পেতে
  • অন্তর্ভুক্ত - কমিট করার জন্য ফাইলের মাস্ক সেট করে
আমরা কোথায় আপলোড করব:
  • repositoryOwner - GitHub-এ রিপোজিটরি মালিকের নাম
  • repositoryName - সংগ্রহস্থলের নাম
  • শাখা - গিটহাবের রিপোজিটরি শাখা সেট করে যা প্রতিশ্রুতি দিতে হবে
  • বার্তা - বার্তা যা কমিট করার সময় যোগ করা হবে

আপনাকে Maven setting.xml- এ আপনার সংগ্রহস্থলের জন্য লগইন এবং পাসওয়ার্ডও উল্লেখ করতে হবে :

<settings>
  <servers>
    <server>
  	<id>github</id>
      <username>[username]</username>
      <password>[password]</password>
    </server>
  </servers>
</settings>

একটি GitHub সংগ্রহস্থল থেকে অন্য একটি প্রকল্পে একটি লাইব্রেরি সংযোগ (ব্যবহার) করতে, আপনাকে আপনার pom.xml- এ এই সংগ্রহস্থলটি নির্দিষ্ট করতে হবে :

<repositories>
    <repository>
        <id>[name-project]-mvn-repo</id>
        <url>https://raw.github.com/[username]/[name-project]/mvn-repo/</url>
    	<snapshots>
            <enabled>true</enabled>
            <updatePolicy>always</updatePolicy>
    	</snapshots>
	</repository>
</repositories>

এর পরে, মাভেন বুঝতে পারবে কোথা থেকে লাইব্রেরি পেতে হবে।

  • [name-project] প্রকল্পের নাম, আমাদের ক্ষেত্রে সুপারলাইব্রেরি
  • [username] হল GitHub-এ লগইন, উদাহরণে এটি codegym-user

একটি ডকার ইমেজে সমাবেশ প্যাকিং

আমরা একটি নতুন সময়ে বাস করি, যখন সমাবেশের ফলস্বরূপ প্রকল্পগুলি ম্যাভেন সংগ্রহস্থলে বা ডকার স্টোরেজে রাখা যেতে পারে।

ম্যাভেন এবং ডকারকে বন্ধু করতে, আমাদের ডকার-মাভেন-প্লাগইন প্লাগইন দরকার । জটিল কিছু নেই:

  <build>
    <plugins>
  	  <plugin>
        <groupId>com.spotify</groupId>
        <artifactId>docker-maven-plugin</artifactId>
    	<version>0.4.10</version>
    	<configuration>
          <dockerDirectory>${project.basedir}</dockerDirectory>
      	  <imageName>codegym/${project.artifactId}</imageName>
    	</configuration>
    	<executions>
      	  <execution>
            <phase>package</phase>
        	<goals>
          	<goal>build</goal>
        	</goals>
      	  </execution>
    	</executions>
  	  </plugin>
    </plugins>
  </build>

নীল রঙে হাইলাইট করা হল সেই পয়েন্ট যেখানে আমরা বিল্ডের প্যাকেজ ফেজে লক্ষ্য বুলড যোগ করেছি। এটি mvn docker:build কমান্ড দিয়ে কল করা যেতে পারে ।

ডকারডিরেক্টরি ট্যাগটি ফোল্ডারটি নির্দিষ্ট করে যেখানে ডকারফাইলটি অবস্থিত। এবং imageName ট্যাগ ব্যবহার করে ছবির নাম সেট করা হয় ।

যদি প্রকল্পটি একটি জার ফাইলে প্যাকেজ করা হয়, তবে ডকার ফাইলটি এরকম কিছু দেখতে পাবে:

FROM java:11
EXPOSE 8080
ADD /target/demo.jar demo.jar
ENTRYPOINT ["java","-jar","demo.jar"]

আপনি যদি একটি ওয়েব অ্যাপ্লিকেশন প্যাকেজিং করেন, তাহলে আপনাকে টমক্যাট যোগ করতে হতে পারে:

FROM tomcat8
ADD sample.war ${CATALINA_HOME}/webapps/ROOT.war
CMD ${CATALINA_HOME}/bin/catalina.sh run