সফ্টওয়্যার সরবরাহ সুরক্ষিত করা

১. সংক্ষিপ্ত বিবরণ

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

5af5e4da3ccfdff3.png

এই ল্যাবে, তোমরা নিম্নলিখিত কাজগুলো কীভাবে করতে হয় তা শিখবে।

  • আপনার ব্যক্তিগত প্যাকেজগুলি স্থাপন করার জন্য স্ট্যান্ডার্ড রিপোজিটরি ব্যবহার করুন।
  • Maven Central প্যাকেজ ক্যাশ করতে রিমোট রিপোজিটরি ব্যবহার করুন
  • একাধিক আপস্ট্রিম রিপোকে একটি কনফিগে একত্রিত করতে ভার্চুয়াল রিপোজিটরি ব্যবহার করুন।

স্ব-গতিতে পরিবেশ সেটআপ

  1. Google Cloud Console- এ সাইন-ইন করুন এবং একটি নতুন প্রজেক্ট তৈরি করুন অথবা বিদ্যমান কোনো প্রজেক্ট পুনরায় ব্যবহার করুন। যদি আপনার আগে থেকে Gmail বা Google Workspace অ্যাকাউন্ট না থাকে, তবে আপনাকে অবশ্যই একটি তৈরি করতে হবে।

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • প্রজেক্টের নামটি হলো এই প্রজেক্টের অংশগ্রহণকারীদের প্রদর্শিত নাম। এটি একটি ক্যারেক্টার স্ট্রিং যা গুগল এপিআই ব্যবহার করে না। আপনি যেকোনো সময় এটি আপডেট করতে পারেন।
  • প্রজেক্ট আইডি সমস্ত গুগল ক্লাউড প্রজেক্ট জুড়ে অনন্য এবং অপরিবর্তনীয় (একবার সেট করার পর এটি পরিবর্তন করা যায় না)। ক্লাউড কনসোল স্বয়ংক্রিয়ভাবে একটি অনন্য স্ট্রিং তৈরি করে; সাধারণত এটি কী তা নিয়ে আপনার মাথা ঘামানোর প্রয়োজন হয় না। বেশিরভাগ কোডল্যাবে, আপনাকে প্রজেক্ট আইডি উল্লেখ করতে হবে (এটি সাধারণত PROJECT_ID হিসাবে চিহ্নিত করা হয়)। তৈরি করা আইডিটি আপনার পছন্দ না হলে, আপনি এলোমেলোভাবে আরেকটি তৈরি করতে পারেন। বিকল্পভাবে, আপনি নিজের আইডি দিয়ে চেষ্টা করে দেখতে পারেন যে সেটি উপলব্ধ আছে কিনা। এই ধাপের পরে এটি পরিবর্তন করা যাবে না এবং প্রজেক্টের পুরো সময়কাল জুড়ে এটি অপরিবর্তিত থাকবে।
  • আপনার অবগতির জন্য জানাচ্ছি যে, তৃতীয় একটি ভ্যালু রয়েছে, যা হলো প্রজেক্ট নাম্বার এবং কিছু এপিআই এটি ব্যবহার করে। ডকুমেন্টেশনে এই তিনটি ভ্যালু সম্পর্কে আরও বিস্তারিত জানুন।
  1. এরপর, ক্লাউড রিসোর্স/এপিআই ব্যবহার করার জন্য আপনাকে ক্লাউড কনসোলে বিলিং চালু করতে হবে। এই কোডল্যাবটি সম্পন্ন করতে খুব বেশি খরচ হওয়ার কথা নয়, এমনকি আদৌ কোনো খরচ নাও হতে পারে। এই টিউটোরিয়ালের পর যাতে কোনো বিলিং না হয়, সেজন্য রিসোর্সগুলো বন্ধ করতে আপনি আপনার তৈরি করা রিসোর্সগুলো অথবা পুরো প্রজেক্টটিই ডিলিট করে দিতে পারেন। গুগল ক্লাউডের নতুন ব্যবহারকারীরা ৩০০ মার্কিন ডলারের ফ্রি ট্রায়াল প্রোগ্রামের জন্য যোগ্য।

ওয়ার্কস্পেস সেটআপ

gcloud সেট আপ করুন

ক্লাউড শেলে আপনার প্রজেক্ট আইডি এবং প্রজেক্ট নম্বর সেট করুন। এগুলোকে PROJECT_ID এবং PROJECT_NUMBER ভেরিয়েবল হিসেবে সংরক্ষণ করুন।

export PROJECT_ID=$(gcloud config get-value project)
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')

এপিআই সক্ষম করুন

gcloud services enable artifactregistry.googleapis.com

রিপোটি ক্লোন করুন

git clone https://github.com/GoogleCloudPlatform/java-docs-samples
cd java-docs-samples/container-registry/container-analysis

২. স্ট্যান্ডার্ড রিপোজিটরি

স্ট্যান্ডার্ড রিপোজিটরি আপনার ব্যক্তিগত প্যাকেজগুলি সংরক্ষণ করার এবং আপনার অন্যান্য অ্যাপ্লিকেশনগুলিতে সেগুলি শেয়ার করার একটি উপায় প্রদান করে।

একটি স্ট্যান্ডার্ড মেভেন রিপোজিটরি তৈরি করুন

ক্লাউড শেল থেকে জাভা আর্টিফ্যাক্টের জন্য একটি রিপোজিটরি তৈরি করতে নিম্নলিখিত কমান্ডটি চালান:

gcloud artifacts repositories create container-dev-java-repo \
    --repository-format=maven \
    --location=us-central1 \
    --description="Java package repository for Container Dev Workshop"

ক্লাউড শেল অথরাইজেশন প্রম্পট দেখা গেলে অথরাইজ-এ ক্লিক করুন।

Google Cloud Console - Artifact Registry - Repositories- এ যান এবং আপনার সদ্য তৈরি করা container-dev-java-repo নামের Maven রিপোজিটরিটি লক্ষ্য করুন, এটিতে ক্লিক করলে আপনি দেখতে পাবেন যে এই মুহূর্তে এটি খালি আছে।

gcloud artifacts repositories describe container-dev-java-repo \
    --location=us-central1

নিম্নলিখিতের অনুরূপ একটি প্রতিক্রিয়া ফেরত দেওয়া উচিত।

Encryption: Google-managed key
Repository Size: 0.000MB
createTime: '2023-03-21T19:01:45.461589Z'
description: Java package repository for Container Dev Workshop
format: MAVEN
mavenConfig: {}
mode: STANDARD_REPOSITORY
name: projects/qwiklabs-gcp-03-4304110dc461/locations/us-central1/repositories/container-dev-java-repo
updateTime: '2023-03-21T19:01:45.461589Z'

আর্টিফ্যাক্ট রেজিস্ট্রির জন্য মেভেন কনফিগার করুন

আপনার জাভা প্রজেক্টে যোগ করার জন্য রিপোজিটরি কনফিগারেশন প্রিন্ট করতে নিম্নলিখিত কমান্ডটি চালান:

gcloud artifacts print-settings mvn \
    --repository=container-dev-java-repo \
    --location=us-central1

পূর্ববর্তী কমান্ডটি আপনার প্রোজেক্টের pom.xml-এ যোগ করার জন্য xml ফাইল রিটার্ন করে।

  • রিপোজিটরি বিভাগে নির্দিষ্ট করা থাকে যে, বর্তমান প্রজেক্টে ব্যবহারের জন্য Maven কোথা থেকে রিমোট আর্টিফ্যাক্ট ডাউনলোড করতে পারে।
  • distributionManagement সেকশনটি নির্দিষ্ট করে দেয় যে, প্রজেক্টটি ডিপ্লয় করার সময় কোন রিমোট রিপোজিটরিতে পুশ করা হবে।
  • এক্সটেনশন সেকশনটি artifactregistry-maven-wagon যোগ করে, যা আর্টিফ্যাক্ট রেজিস্ট্রি-র সাথে সংযোগ স্থাপনের জন্য প্রয়োজনীয় অথেনটিকেশন এবং ট্রান্সপোর্ট লেয়ার সক্রিয় করে।
  • দ্রষ্টব্য: এক্সটেনশন pom.xml অথবা extensions.xml ফাইলে থাকতে পারে। যেসব ক্ষেত্রে প্রজেক্টটি কোনো প্যারেন্ট প্রজেক্টের উপর নির্ভরশীল, সেক্ষেত্রে pom.xml-এর বাকি এন্ট্রিগুলো লোড হওয়ার আগেই সেই ডিপেন্ডেন্সিগুলো অ্যাক্সেস করা হয়। প্যারেন্ট যাতে এক্সটেনশনটি অ্যাক্সেস করতে পারে, তা নিশ্চিত করার জন্য এটিকে extensions.xml ফাইলে রাখা যেতে পারে, যা pom.xml-এর আগে লোড হয় এবং এর ফলে এটি প্যারেন্ট ডিপেন্ডেন্সিগুলোর জন্য উপলব্ধ হয়ে যায়।

তিনটি সেকশন কপি করুন, তারপর Cloud Shell Editor-এ pom.xml ফাইলটি খুলুন এবং প্রাপ্ত সেটিংসগুলো ফাইলের একদম শেষে, ক্লোজিং project ট্যাগের ঠিক ভেতরে যোগ করুন।

পরামর্শ: ক্লাউডশেলে, বর্তমান ডিরেক্টরিতে এডিটরটি খোলার জন্য টার্মিনালে নিম্নলিখিত কমান্ডটি চালান।

cloudshell workspace .

উদাহরণ: (আপনার URL-গুলোতে প্রজেক্টের নামগুলো ভিন্ন হবে)

  ...

  <distributionManagement>
    <snapshotRepository>
      <id>artifact-registry</id>
      <url>artifactregistry://us-central1-maven.pkg.dev/qwiklabs-gcp-04-3c51830ea757/container-dev-java-repo</url>
    </snapshotRepository>
    <repository>
      <id>artifact-registry</id>
      <url>artifactregistry://us-central1-maven.pkg.dev/qwiklabs-gcp-04-3c51830ea757/container-dev-java-repo</url>
    </repository>
  </distributionManagement>

  <repositories>
    <repository>
      <id>artifact-registry</id>
      <url>artifactregistry://us-central1-maven.pkg.dev/qwiklabs-gcp-04-3c51830ea757/container-dev-java-repo</url>
      <releases>
        <enabled>true</enabled>
      </releases>
      <snapshots>
        <enabled>true</enabled>
      </snapshots>
    </repository>
  </repositories>

  <build>
    <extensions>
      <extension>
        <groupId>com.google.cloud.artifactregistry</groupId>
        <artifactId>artifactregistry-maven-wagon</artifactId>
        <version>2.2.0</version>
      </extension>
    </extensions>
  </build>

</project>

আপনার জাভা প্যাকেজটি আর্টিফ্যাক্ট রেজিস্ট্রি-তে আপলোড করুন

Maven-এ Artifact Registry কনফিগার করা থাকলে, আপনি এখন আপনার প্রতিষ্ঠানের অন্যান্য প্রোজেক্টে ব্যবহারের জন্য Java jar ফাইল সংরক্ষণ করতে এটি ব্যবহার করতে পারবেন।

আপনার জাভা প্যাকেজটি আর্টিফ্যাক্ট রেজিস্ট্রি-তে আপলোড করতে নিম্নলিখিত কমান্ডটি চালান:

mvn deploy -DskipTests

আপনি যদি এই কমান্ডটি আবার চালাতে চান, তাহলে pom.xml-এ ভার্সনটি বাড়িয়ে নিতে ভুলবেন না।

আর্টিফ্যাক্ট রেজিস্ট্রি-তে জাভা প্যাকেজটি পরীক্ষা করুন

ক্লাউড কনসোল - আর্টিফ্যাক্ট রেজিস্ট্রি - রিপোজিটরি- তে যান। container-dev-java-repo ভিতরে ক্লিক করুন এবং পরীক্ষা করে দেখুন যে hello-world বাইনারি আর্টিফ্যাক্টটি সেখানে আছে কিনা:

147eac5168648db1.png

৩. রিমোট রিপোজিটরি

রিমোট রিপোজিটরিগুলো বর্ধিত নির্ভরযোগ্যতা এবং নিরাপত্তার জন্য থার্ড পার্টি প্যাকেজ ক্যাশ করার সুবিধা প্রদান করে।

একটি রিমোট রিপোজিটরি তৈরি করুন

দ্রষ্টব্য: প্রমাণীকরণ এবং কনফিগারেশন সম্পর্কিত বিস্তারিত তথ্যের জন্য পণ্যের ডকুমেন্টেশন পর্যালোচনা করুন।

Maven Central আর্টিফ্যাক্টগুলির জন্য একটি রিমোট রিপোজিটরি তৈরি করতে Cloud Shell থেকে নিম্নলিখিত কমান্ডটি চালান:

gcloud artifacts repositories create maven-central-cache \
    --project=$PROJECT_ID \
    --repository-format=maven \
    --location=us-central1 \
    --description="Remote repository for Maven Central caching" \
    --mode=remote-repository \
    --remote-repo-config-desc="Maven Central" \
    --remote-mvn-repo=MAVEN-CENTRAL

কনসোলে রিপোটি পর্যালোচনা করুন।

ক্লাউড কনসোল - আর্টিফ্যাক্ট রেজিস্ট্রি - রিপোজিটরি- তে যান। maven-central-cache এর ভেতরে ক্লিক করুন এবং লক্ষ্য করুন যে এটি তৈরি হয়েছে এবং বর্তমানে খালি আছে।

টার্মিনালে রিপোটি পর্যালোচনা করুন।

gcloud artifacts repositories describe maven-central-cache \
    --location=us-central1

আপনার প্রোজেক্টে রিপোটি ইন্টিগ্রেট করুন।

আপনার জাভা প্রজেক্টে যোগ করার জন্য রিপোজিটরি কনফিগারেশন প্রিন্ট করতে নিম্নলিখিত কমান্ডটি চালান:

gcloud artifacts print-settings mvn \
    --repository=maven-central-cache \
    --location=us-central1

আপনার pom.xml-এ রিপোজিটরি সেকশনটি যোগ করুন। খেয়াল রাখবেন যেন আউটপুট থেকে বাইরের <repositories> ট্যাগটি কপি না করেন।

প্রতিটি রিপোজিটরি এন্ট্রির একটি অনন্য আইডি নিশ্চিত করতে, নতুন যোগ করা রিপোজিটরিটির আইডি পরিবর্তন করে 'central' করুন।

উদাহরণ: (আপনার URL-গুলোতে প্রজেক্টের নামগুলো ভিন্ন হবে)

  ...

  <distributionManagement>
    <snapshotRepository>
      <id>artifact-registry</id>
      <url>artifactregistry://us-central1-maven.pkg.dev/qwiklabs-gcp-04-3c51830ea757/container-dev-java-repo</url>
    </snapshotRepository>
    <repository>
      <id>artifact-registry</id>
      <url>artifactregistry://us-central1-maven.pkg.dev/qwiklabs-gcp-04-3c51830ea757/container-dev-java-repo</url>
    </repository>
  </distributionManagement>

  <repositories>
    <repository>
      <id>artifact-registry</id>
      <url>artifactregistry://us-central1-maven.pkg.dev/qwiklabs-gcp-04-3c51830ea757/container-dev-java-repo</url>
      <releases>
        <enabled>true</enabled>
      </releases>
      <snapshots>
        <enabled>true</enabled>
      </snapshots>
    </repository>

    <repository>
      <id>central</id>
      <url>artifactregistry://us-central1-maven.pkg.dev/qwiklabs-gcp-04-3c51830ea757/maven-central-cache</url>
      <releases>
        <enabled>true</enabled>
      </releases>
      <snapshots>
        <enabled>true</enabled>
      </snapshots>
    </repository>


  </repositories>

  <build>
    <extensions>
      <extension>
        <groupId>com.google.cloud.artifactregistry</groupId>
        <artifactId>artifactregistry-maven-wagon</artifactId>
        <version>2.2.0</version>
      </extension>
    </extensions>
  </build>

</project>

আপনার প্রোজেক্টের জন্য একটি extensions.xml তৈরি করতে আপনার টার্মিনালে নিম্নলিখিত কমান্ডগুলি চালান। এটি কোর এক্সটেনশন মেকানিজম ব্যবহার করে, যা নিশ্চিত করে যে Maven আর্টিফ্যাক্ট রেজিস্ট্রি থেকে প্যারেন্ট বা প্লাগইন ডিপেন্ডেন্সিগুলি রিজলভ করতে পারে।

mkdir .mvn 
cat > .mvn/extensions.xml << EOF
<extensions xmlns="http://maven.apache.org/EXTENSIONS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/EXTENSIONS/1.0.0 http://maven.apache.org/xsd/core-extensions-1.0.0.xsd">
  <extension>
    <groupId>com.google.cloud.artifactregistry</groupId>
    <artifactId>artifactregistry-maven-wagon</artifactId>
    <version>2.2.0</version>
  </extension>
</extensions>
EOF

রিমোট রিপোজিটরি থেকে ডিপেন্ডেন্সিগুলো পুল করুন।

রিমোট রিপোজিটরি ব্যবহার করে আপনার অ্যাপ্লিকেশনটি কম্পাইল করতে নিম্নলিখিত কমান্ডটি চালান:

rm -rf ~/.m2/repository 
mvn compile

কনসোলে প্যাকেজগুলো পর্যালোচনা করুন।

ক্লাউড কনসোল - আর্টিফ্যাক্ট রেজিস্ট্রি - রিপোজিটরি- তে যান, maven-central-cache ভিতরে ক্লিক করুন এবং পরীক্ষা করে দেখুন যে বাইনারি আর্টিফ্যাক্টগুলি সেখানে ক্যাশ করা আছে কিনা:

9deea93caa5fefd7.png

৪. ভার্চুয়াল সংগ্রহস্থল

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

একটি পলিসি ফাইল তৈরি করুন

cat > ./policy.json << EOF
[
  {
    "id": "private",
    "repository": "projects/${PROJECT_ID}/locations/us-central1/repositories/container-dev-java-repo",
    "priority": 100
  },
  {
    "id": "central",
    "repository": "projects/${PROJECT_ID}/locations/us-central1/repositories/maven-central-cache",
    "priority": 80
  }
]

EOF

ভার্চুয়াল রিপোজিটরি তৈরি করুন

gcloud artifacts repositories create virtual-maven-repo \
    --project=${PROJECT_ID} \
    --repository-format=maven \
    --mode=virtual-repository \
    --location=us-central1 \
    --description="Virtual Maven Repo" \
    --upstream-policy-file=./policy.json

আপনার প্রোজেক্টে রিপোটি ইন্টিগ্রেট করুন।

আপনার জাভা প্রজেক্টে যোগ করার জন্য রিপোজিটরি কনফিগারেশন প্রিন্ট করতে নিম্নলিখিত কমান্ডটি চালান:

gcloud artifacts print-settings mvn \
    --repository=virtual-maven-repo \
    --location=us-central1

আপনার pom ফাইলের সম্পূর্ণ repositories সেকশনটি আউটপুট থেকে পাওয়া ভার্চুয়াল repositories সেকশনটি দিয়ে প্রতিস্থাপন করুন।

উদাহরণ: (আপনার URL-গুলোতে প্রজেক্টের নামগুলো ভিন্ন হবে)

  ...


  <distributionManagement>
    <snapshotRepository>
      <id>artifact-registry</id>
      <url>artifactregistry://us-central1-maven.pkg.dev/qwiklabs-gcp-04-3c51830ea757/container-dev-java-repo</url>
    </snapshotRepository>
    <repository>
      <id>artifact-registry</id>
      <url>artifactregistry://us-central1-maven.pkg.dev/qwiklabs-gcp-04-3c51830ea757/container-dev-java-repo</url>
    </repository>
  </distributionManagement>

  <repositories>
    <repository>
      <id>artifact-registry</id>
      <url>artifactregistry://us-central1-maven.pkg.dev/qwiklabs-gcp-04-3c51830ea757/virtual-maven-repo</url>
      <releases>
        <enabled>true</enabled>
      </releases>
      <snapshots>
        <enabled>true</enabled>
      </snapshots>
    </repository>
  </repositories>

  <build>
    <extensions>
      <extension>
        <groupId>com.google.cloud.artifactregistry</groupId>
        <artifactId>artifactregistry-maven-wagon</artifactId>
        <version>2.2.0</version>
      </extension>
    </extensions>
  </build>

</project>


ভার্চুয়াল রিপোজিটরি থেকে ডিপেন্ডেন্সিগুলো পুল করুন।

যেহেতু ভার্চুয়াল রিপোজিটরি একটি পাস-থ্রু এবং এতে কোনো প্রকৃত প্যাকেজ জমা থাকে না, তাই প্রক্রিয়াটি স্পষ্টভাবে দেখানোর জন্য আপনি পূর্বে তৈরি করা maven-central-cache রিপোটি ডিলিট করে দেবেন এবং একটি খালি রিপোজিটরি দিয়ে আবার শুরু করার জন্য এটি পুনরায় তৈরি করবেন।

ক্যাশ রিপোজিটরি পুনরায় তৈরি করতে নিম্নলিখিত কমান্ডগুলি চালান।

gcloud artifacts repositories delete maven-central-cache \
    --project=$PROJECT_ID \
    --location=us-central1 \
    --quiet

gcloud artifacts repositories create maven-central-cache \
    --project=$PROJECT_ID \
    --repository-format=maven \
    --location=us-central1 \
    --description="Remote repository for Maven Central caching" \
    --mode=remote-repository \
    --remote-repo-config-desc="Maven Central" \
    --remote-mvn-repo=MAVEN-CENTRAL

আপনি কনসোলে খালি রিপোটি পর্যালোচনা করতে পারেন। ক্লাউড কনসোল - আর্টিফ্যাক্ট রেজিস্ট্রি - রিপোজিটরি- তে যান।

এখন নিম্নলিখিত কমান্ড ব্যবহার করে আপনার প্রজেক্টটি বিল্ড করার মাধ্যমে ভার্চুয়াল রিপোজিটরিটি সক্রিয় করুন।

rm -rf ~/.m2/repository 
mvn compile

কনসোলে প্যাকেজগুলো পর্যালোচনা করুন।

ক্লাউড কনসোল - আর্টিফ্যাক্ট রেজিস্ট্রি - রিপোজিটরি- তে যান, maven-central-cache ভিতরে ক্লিক করুন এবং পরীক্ষা করে দেখুন যে বাইনারি আর্টিফ্যাক্টগুলি ভার্চুয়াল রিপো থেকে পুল করার জন্য কনফিগার করা হয়েছিল কিন্তু শেষ পর্যন্ত maven-central-cache থেকে পুল করা হয়েছে:

9deea93caa5fefd7.png

৫. অভিনন্দন!

অভিনন্দন, আপনি কোডল্যাবটি সম্পন্ন করেছেন!

আপনি যা যা আলোচনা করেছেন

  • আপনার ব্যক্তিগত প্যাকেজগুলি স্থাপন করার জন্য ব্যবহৃত স্ট্যান্ডার্ড রিপোজিটরিগুলি
  • মেভেন সেন্ট্রাল প্যাকেজ ক্যাশ করার জন্য রিমোট রিপোজিটরি ব্যবহার করা হয়েছে
  • একাধিক আপস্ট্রিম রিপোকে একটি কনফিগে একত্রিত করতে ভার্চুয়াল রিপোজিটরি ব্যবহার করা হয়েছে।

পরিষ্কার-পরিচ্ছন্নতা

প্রজেক্টটি ডিলিট করতে নিম্নলিখিত কমান্ডটি চালান।

gcloud projects delete ${PROJECT_ID}

সর্বশেষ হালনাগাদ: ২২/৩/২৩