স্প্রিং বুট - প্যারেন্ট পম যখন আপনার ইতিমধ্যে প্যারেন্ট পম থাকে


184

ইতিমধ্যে প্রয়োজনীয় প্যারেন্ট পিওএম রয়েছে এমন প্রকল্পগুলিতে স্প্রিং-বুট প্যারেন্ট পম অন্তর্ভুক্ত করার জন্য কি কোনও নির্দিষ্ট প্রস্তাবিত পদ্ধতি রয়েছে?

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

সুতরাং প্রয়োজনীয় প্যারেন্ট POM এর ভিতরে সমস্ত বসন্ত-বুট প্যারেন্ট পম অন্তর্ভুক্ত করা বা প্রকল্পের POM ফাইলের মধ্যে কেবল একটি POM নির্ভরতা থাকা ভাল।

অন্যান্য অপশন?

tia,

স্কট

উত্তর:


179

আপনি "বোম" এর মতো বসন্ত-বুট-স্টার্টার-প্যারেন্ট ব্যবহার করতে পারেন (সিএফ স্প্রিং এবং জার্সির অন্যান্য প্রকল্পগুলি যা এই বৈশিষ্ট্যটি এখন সমর্থন করে), এবং কেবলমাত্র স্কোপ = ইম্পোর্ট সহ নির্ভরতা পরিচালন বিভাগে এটি অন্তর্ভুক্ত করতে পারেন way এইভাবে আপনি অনেক কিছু পান আপনার প্রকৃত পিতামাতার সেটিংস প্রতিস্থাপন না করে এটি (যেমন নির্ভরতা পরিচালন) ব্যবহারের সুবিধা।

এটি 2 প্রধান অন্যান্য জিনিসগুলি

  1. আপনি ওভাররাইড করতে চান এমন নির্ভরতার দ্রুত সংস্করণ নির্ধারণের জন্য প্রচুর সংখ্যক বৈশিষ্ট্য নির্ধারণ করুন
  2. ডিফল্ট কনফিগারেশন (মূলত স্প্রিং বুট মাভেন প্লাগইন) সহ কিছু প্লাগইন কনফিগার করুন। সুতরাং আপনি যদি নিজের পিতামাতাকে ব্যবহার করেন তবে ম্যানুয়ালি করতে হবে এমন জিনিসগুলি।

স্প্রিং বুট ডকুমেন্টেশনে প্রদত্ত উদাহরণ :

<dependencyManagement>
    <dependencies>
        <dependency>
            <!-- Import dependency management from Spring Boot -->
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>2.1.3.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

1
আমি অনুমান করছি যে এটি প্লাগিনগুলি - শেড ইত্যাদিতে টানছে?
chrislovecnm

3
নং লিঙ্কটি পড়ুন: "আপনি এখনও নির্ভরতা পরিচালনার সুবিধা রাখতে পারেন (তবে প্লাগইন পরিচালনার নয়)"।
ডেভ সিয়ার

1
@DaveSyer নির্মল করুন: 1: যখন আমি আমার রীতি আছে project-parentআমি যোগ করতে পারিনি spring-boot-starter-parentএই project-parent- এটা ঠিক আছে? আমারও spring-boot-dependenciesকি এমন পরিস্থিতিতে দরকার ? 2: সাধারণ স্প্রিং-বুট প্রকল্প আমি স্প্রিং-বুট ব্যবহার করে চালিত করি: চালান। বিভিন্ন প্যারেন্ট পম দিয়ে কীভাবে প্রকল্প চালাবেন?
jsosnowski

1
উপরের কোড স্নিপেট নির্ভরতা পরিচালন বৈশিষ্ট্যগুলি পেতে যথেষ্ট। আপনি যদি প্লাগইন চান (যেমন spring-boot:run) তবে আপনার সেগুলি আলাদাভাবে বিভ্রান্ত করা উচিত। আপনি চাইলে বুট পিতামাতার কাছ থেকে পেস্ট অনুলিপি করতে পারেন।
ডেভ সিয়ার

3
আমি জানি এটি একটি পুরানো সুতো তবে এটি আমাকে অনেক সাহায্য করেছে, ধন্যবাদ। উত্স maven.apache.org/guides/intr پيداوار/… এ এই প্রক্রিয়াটি সম্পর্কে পড়া শেষ করেছি । এটা অনেক ব্যাখ্যা করে।
বাজেউজ

42

1.5-0.RELEASE সহ 2018-01-04 আপডেট করুন।

আমার কাছে এখানে সম্পূর্ণ কোড এবং চলমান উদাহরণ আছে https://www.surasint.com/spring-boot-with-no-parent-example/

এটি আপনার প্রাথমিক হিসাবে প্রয়োজন

   <dependencyManagement>
        <dependencies>
            <dependency>
                <!-- Import dependency management from Spring Boot -->
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${springframework.boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

তবে এটি যথেষ্ট নয়, আপনার স্প্রিং-বুট-ম্যাভেন-প্লাগইনের জন্য স্পষ্টভাবে লক্ষ্য নির্ধারণ করতে হবে (আপনি যদি স্প্রিং বুটকে প্যারেন্ট হিসাবে ব্যবহার করেন তবে আপনাকে এটিকে স্পষ্টভাবে সংজ্ঞায়িত করতে হবে না)

    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <version>${springframework.boot.version}</version>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>

অন্যথায় আপনি এক্সিকিউটেবল জার বা যুদ্ধ হিসাবে তৈরি করতে পারবেন না।

এখনও নয়, আপনি জেএসপি ব্যবহার করছেন, আপনার এটি থাকা দরকার:

<properties>    
  <failOnMissingWebXml>false</failOnMissingWebXml>
</properties>

অন্যথায়, আপনি এই ত্রুটি বার্তা পাবেন:

    [ERROR] Failed to execute goal org.apache.maven.plugins:maven-war-plugin:2.2:war (default-war) on project spring-boot-09: Error assembling WAR: webxml attribute is required (or pre-existing WEB-INF/web.xml if executi
ng in update mode) -> [Help 1]

না না, আপনি যদি "$ {}" এর পরিবর্তে "@" দিয়ে স্প্রিং বুট সহ মাভেন প্রোফাইল এবং রিসোর্স ফিল্টার ব্যবহার করছেন তবে এটি https://www.surasint.com/spring-boot-maven এর মতো -স্রোত-ফিল্টার / )। তারপরে আপনাকে এটিকে স্পষ্টভাবে যুক্ত করতে হবে

    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
        </resource>
    </resources>

এবং এই ভিতরে

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-resources-plugin</artifactId>
            <version>2.7</version>
            <configuration>
                <delimiters>
                    <delimiter>@</delimiter>
                </delimiters>
                <useDefaultDelimiters>false</useDefaultDelimiters>
            </configuration>
        </plugin>

Https://www.surasint.com/spring-boot-with-no-parent-example/ লিঙ্কে উদাহরণটি দেখুন ।


@ সতর্কবার্তাটি দাও, আমার উদাহরণটি 1.5.9। আপনার 1.5.11 ব্যবহার করা উচিত (গতকাল প্রকাশ করুন) কারণ এই সংস্করণটিতে একটি গুরুতর সুরক্ষা সমস্যার সমাধান রয়েছে।
সুরসিন তানচরওন

যেমনটি আপনার ব্লগের উল্লেখ রয়েছে, আমি মভেন-রিসোর্স-প্লাগইন যুক্ত করার চেষ্টা করেছি, তবে এখনও এটি আমাকে "লক্ষ্য হিসাবে কোনও প্রধান প্রকাশ্য বৈশিষ্ট্য নয়" দেয়। আমি বসন্ত-বুট চালানোর চেষ্টা করেছি: চালান, এটিও কাজ করছে না :(
সাগর 27

@ sagar27 আপনি কোন সংস্করণ 1.5.X বা 2.x ব্যবহার করছেন? যদি এটি 2.x হয় তবে এর জন্য আরও জিনিস প্রয়োজন হতে পারে।
সুরসিন তানচরওন

ধন্যবাদ !! আপনি আমার জীবন বাঁচিয়েছেন
জে আতিওয়াত

0

সুরসিন তানচরোনের উত্তর অনুসারে, আপনি ম্যাভেন শিফারফায়ার প্লাগইনও সংজ্ঞায়িত করতে চাইতে পারেন

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>${maven-surefire-plugin.version}</version>
        </plugin>

এবং সম্ভবত ব্যর্থ-দ্রুত প্লাগইন অন্তর্ভুক্ত

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-failsafe-plugin</artifactId>
        <version>${maven-failsafe-plugin.version}</version>
        <executions>
            <execution>
                <goals>
                    <goal>integration-test</goal>
                    <goal>verify</goal>
                </goals>
            </execution>
        </executions>
    </plugin>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.