মাভেনের সাথে ফাইলগুলি অনুলিপি করার জন্য সেরা অনুশীলন


193

আমার কাছে কনফিগার ফাইল এবং বিভিন্ন নথি রয়েছে যা আমি ডেভ পরিবেশ থেকে ডেভ-সার্ভার ডিরেক্টরিতে মাভেন 2 ব্যবহার করে অনুলিপি করতে চাই। আশ্চর্যের বিষয়, মাভেন এই কাজে শক্তিশালী বলে মনে হয় না।

কয়েকটি বিকল্প:

  • মাভেনে একটি অনুলিপি টাস্ক ব্যবহার করুন
<copy file="src/main/resources/config.properties" tofile="${project.server.config}/config.properties"/>
  • পিপীলিকা থেকে অনুলিপি চালানোর জন্য পিঁপড়া প্লাগইন ব্যবহার করুন ।

    • প্রকারের একটি হস্তনির্মিত বস্তু আঁকো জিপ , খুলুন POM সাধারণত ধরনের যা "মেন" হস্তনির্মিত বস্তু পাশাপাশি বয়াম , তারপর প্যাকমুক্ত লক্ষ্য ডিরেক্টরির মধ্যে সংগ্রহস্থল থেকে যে হস্তনির্মিত বস্তু।

    • মাভেন-রিসোর্স প্লাগইন, নীচে উল্লিখিত হিসাবে।

    • মাভেন অ্যাসেম্বলি প্লাগইন - তবে যখন আমি সহজ এবং "প্রচলিতভাবে" জিনিসগুলি করতে চাই তখন এটির জন্য অনেকগুলি ম্যানুয়াল সংজ্ঞা প্রয়োজন।

    • এই পৃষ্ঠাটি এমনকি কীভাবে অনুলিপি করতে একটি প্লাগইন তৈরি করতে পারে তা দেখায়!

    • মাভেন-আপলোড প্লাগইন, নীচে উল্লিখিত

    • নীচে উল্লিখিত হিসাবে অনুলিপি - সহ অনুলিপি -প্লাগইন copy


এগুলি অযথা অযৌক্তিক বলে মনে হচ্ছে: মাভেনের হস্তক্ষেপ ও উদ্বেগ ছাড়াই এই মানক কাজগুলিতে দক্ষতা অর্জন করার কথা।

কোন পরামর্শ?


2
মাভেন পর্যায়ক্রমে একটি জীবন চক্রের ধারণাটি তৈরি করছেন, একটি দূরবর্তী সার্ভার টাস্কে এলোমেলো ফাইলগুলির অনুলিপি এটির মধ্যে সত্যিই খাপ খায় না। সর্বদা আপনার প্রকল্পটি সম্পূর্ণরূপে ভাবেন।
আন্দ্রে

3
"এগুলি অযথা অযৌক্তিক বলে মনে হচ্ছে: মাভেনের কোনও হট্টগোল ও বিরক্তি ছাড়াই এই মানক কাজগুলিতে দক্ষতা অর্জন করার কথা।" আপনি যা করছেন তা কোনও স্ট্যান্ডার্ড কাজ নয় se আপনার নিদর্শনটি যদি যুদ্ধ / কান হয় তবে এটি কার্গো প্লাগইন (cargo.codehaus.org/Maven2+plugin#Maven2plugin-get…) ব্যবহার করার মতো সহজ। আপনি কী বর্ণনা করছেন তা আপনি কীভাবে মোতায়েন করছেন এবং মানক জাভা অ্যাপ্লিকেশন ধারক মোতায়েনের জন্য নয় তা অত্যন্ত সুনির্দিষ্ট মনে হচ্ছে। লাইভ সার্ভারগুলিতে ডেভলাই টাইম ক্রিয়াকলাপগুলি পরিচালনা করতে ম্যাভেনকে সত্যই প্রস্তুত করা হয় না - এটি তৈরি / ডেভ ক্রিয়াকলাপগুলিতে আরও ভাল।
তিমি 20

67
@ আন্দ্রে: আমি সেই যুক্তিটি বারবার শুনেছি, তবে দুঃখিত, এটি বিএস। সামগ্রিকভাবে প্রকল্পটি ভাবার ক্ষেত্রে কোনও ভুল নেই, তবে যে কোনও শালীন বিল্ড সিস্টেমের অংশটি কার্যকারিতা হওয়া উচিত যা আমাকে সরাসরি অনূদিত পদ্ধতিতে টাস্ক এক্স অর্জন করতে দেয়, যেমন ফাইল অনুলিপি করা, এবং মাভেন এটি করতে পারে না। বিল্ড-স্ক্রিপ্টগুলি হ'ল কোড দৃষ্টান্তকে (গ্র্যাডল, এসবিটি বা বিল্ডারের মতো) আলিঙ্গন করার কারণে ইদানীং এতগুলি প্রকল্প পপ আপ হওয়ার কারণ রয়েছে।
ম্যাথিয়াস

আমি একটি pom.xml থাকার পরামর্শ দিচ্ছি বিল্ডিং জন্য নিদর্শন এবং অন্য মোতায়েন একটি প্রদত্ত হস্তনির্মিত বস্তু।
থোরবজর্ন রাভন অ্যান্ডারসন

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

উত্তর:


119

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

<project>
  [...]
  <build>
    <plugins>
      [...]
      <plugin>
        <artifactId>maven-antrun-plugin</artifactId>
        <executions>
          <execution>
            <phase>deploy</phase>
            <configuration>
              <tasks>

                <!--
                  Place any Ant task here. You can add anything
                  you can add between <target> and </target> in a
                  build.xml.
                -->

              </tasks>
            </configuration>
            <goals>
              <goal>run</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  [...]
</project>

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

আবার, আমি নিশ্চিত যে আরও ভাল উপায় আছে।


টাস্ক বর্ণনাকারীর এখন অবনতি হয়েছে?
ম্যাট

3
@ ম্যাট হ্যাঁ, taskপ্যারামিটারটি এখন অবচয় করা হয়েছে ( অ্যান্ট্রুন প্লাগইন )। targetপরিবর্তে আপনার ব্যবহার করা উচিত (1.5 থেকে)। দুর্ভাগ্যক্রমে এমন উদাহরণ রয়েছে যা এর সাথে মিশে যায়; যেমন targetপ্যারামিটার এবং version<1.5।
কুহ

এটি কীভাবে গ্রহণযোগ্য উত্তর হতে পারে? অবশ্যই কোনও সাধারণ জিনিস অনুলিপি করার জন্য মাভেনের পরিবর্তনের অনুরোধ থাকা উচিত।
ওল্ফগ্যাং ফাহল

137
<build>
    <plugins>
        ...
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-resources-plugin</artifactId>
            <version>2.3</version>
        </plugin>
    </plugins>
    <resources>
        <resource>
            <directory>src/main/java</directory>
            <includes>
                <include> **/*.properties</include>
            </includes>
        </resource>
    </resources>
    ...
</build>

ধন্যবাদ @ পিটার, এটি কার্যকর ছিল। আমি এখন অ্যান্ট্রুনের পরিবর্তে রিসোর্স-প্লাগইন অনুলিপি-সংস্থান লক্ষ্য ব্যবহার করি। পরবর্তীটি সংজ্ঞায়িত করার জন্য আসলে অনেক সহজ এবং স্বজ্ঞাত, তবে আমি এটিকে (সংস্করণ 1.3) সমস্ত মাভেন কাস্টম বৈশিষ্ট্য (<প্রোপার্টি> বিভাগে সংজ্ঞায়িত) অ্যান্ট্রুনে পাস করতে পারি নি, তাই আমি সংস্থানগুলি-প্লাগইনটিতে স্যুইচ করেছি।
কর্নেল ম্যাসন

2
আমি ভাবতাম এটিই সঠিক উত্তর ... যতক্ষণ না বুঝে রিসোর্স প্লাগইনে একটি এড়িয়ে যাওয়া কনফিগারেশন নেই। অন্তঃপুর যাওয়ার পথ।
মাইক পোস্ট

এড়িয়ে যাওয়া প্রোফাইল তৈরি করা কঠিন হওয়া উচিত নয়। অ্যান্ট্রন ব্যবহার করেন নি, তাই কোনটি সহজ / উন্নত তা আমি বলতে পারি না
বিবেক চাভদা

40

একটি ফাইল অনুলিপি করতে:

        <plugin>
            <artifactId>maven-resources-plugin</artifactId>
            <version>3.1.0</version>
            <executions>
                <execution>
                    <id>copy-resource-one</id>
                    <phase>install</phase>
                    <goals>
                        <goal>copy-resources</goal>
                    </goals>

                    <configuration>
                        <outputDirectory>${basedir}/destination-folder</outputDirectory>
                        <resources>
                            <resource>
                                <directory>/source-folder</directory>
                                <includes>
                                    <include>file.jar</include>
                                </includes>
                            </resource>
                        </resources>
                    </configuration>
                </execution>
           </executions>
        </plugin>

সাব-ফোল্ডারগুলির সাথে ফোল্ডারটি অনুলিপি করতে পরবর্তী কনফিগারেশনটি ব্যবহার করুন:

           <configuration>
              <outputDirectory>${basedir}/target-folder</outputDirectory>
              <resources>          
                <resource>
                  <directory>/source-folder</directory>
                  <filtering>true</filtering>
                </resource>
              </resources>              
            </configuration>  

মাভেনে ফিল্টারিং স্ট্রিং ইন্টারপোলেশনকে বোঝায় তাই আমি <filtering>যেমন স্ক্রিপ্ট ফাইলগুলিতে ${...}ভেরিয়েবল ব্যবহার করে অযাচিত পরিবর্তনগুলি রোধ করতে বাদ দিতে পারি ।
জেরোল্ডব্রোসর মনিকা

20

মাভেন নির্ভরতা প্লাগইন আমাকে পিঁপড়ার কাজগুলিতে সান্নিধ্যে অনেক সময় বাঁচিয়েছিল:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <executions>
        <execution>
            <id>install-jar</id>
            <phase>install</phase>
            <goals>
                <goal>copy</goal>
            </goals>
            <configuration>
                <artifactItems>
                    <artifactItem>
                        <groupId>...</groupId>
                        <artifactId>...</artifactId>
                        <version>...</version>
                    </artifactItem>
                </artifactItems>
                <outputDirectory>...</outputDirectory>
                <stripVersion>true</stripVersion>
            </configuration>
        </execution>
    </executions>
</plugin>

নির্ভরতা: কপি documentend, এবং আনপ্যাক মত আরো উপযোগী গোল হয়েছে।


3
আমি কয়েক বছর ধরে পিঁপড়াকে ব্যবহার করি নি, এবং আমি এ জাতীয় কোনও সাধারণ কাজের জন্য এটি করা শুরু করতে চাই না। সুতরাং এই উত্তরের জন্য ধন্যবাদ।
গুস্তাভে

17

একটি সাধারণ অনুলিপি-কাজের জন্য আমি অনুলিপি-নামকরণ-মাভেন-প্লাগইন সুপারিশ করতে পারি । এটি সোজা এগিয়ে এবং সহজ ব্যবহার:

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <groupId>com.coderplus.maven.plugins</groupId>
        <artifactId>copy-rename-maven-plugin</artifactId>
        <version>1.0</version>
        <executions>
          <execution>
            <id>copy-file</id>
            <phase>generate-sources</phase>
            <goals>
              <goal>copy</goal>
            </goals>
            <configuration>
              <sourceFile>src/someDirectory/test.environment.properties</sourceFile>
              <destinationFile>target/someDir/environment.properties</destinationFile>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>

আপনি যদি একাধিক ফাইল অনুলিপি করতে চান তবে <sourceFile>...</destinationFile>অংশটি প্রতিস্থাপন করুন

<fileSets>
  <fileSet>
    <sourceFile>src/someDirectory/test.environment.properties</sourceFile>
    <destinationFile>target/someDir/environment.properties</destinationFile>
  </fileSet>
  <fileSet>
    <sourceFile>src/someDirectory/test.logback.xml</sourceFile>
    <destinationFile>target/someDir/logback.xml</destinationFile>
  </fileSet>                
</fileSets>

এছাড়াও প্রয়োজনে আপনি একাধিক পর্যায়ক্রমে একাধিক মৃত্যুদণ্ড নির্দিষ্ট করতে পারেন, দ্বিতীয় লক্ষ্যটি হল "পুনর্নামকরণ", যা কেবল যা যা বলে তা তাই করে যখন বাকী কনফিগারেশন একই থাকে। আরও ব্যবহারের উদাহরণের জন্য ব্যবহার-পৃষ্ঠাটি দেখুন

দ্রষ্টব্য : এই প্লাগইনটি কেবল ডিরেক্টরিগুলি নয় ফাইলগুলি অনুলিপি করতে পারে। (এই সীমাবদ্ধতাটি খুঁজে পাওয়ার জন্য @ জেমস.গরিসকে ধন্যবাদ))


2
যদিও আমি এই প্লাগইনটি পছন্দ করি, অবাক করা বিষয় এটি ডিরেক্টরিগুলি অনুলিপি করতে পারে না।
james.garriss

3
@ james.garriss আমি এই সীমাবদ্ধতা সম্পর্কে সচেতন ছিলাম না তবে দুর্ভাগ্যক্রমে আপনি ঠিক বলেছেন। আমি আমার উত্তরে এটিকে সম্পাদনা করবো সম্ভবত কিছু লোক নিজেরাই এটি খুঁজে পাওয়ার সময় সাশ্রয় করবে।
morten.c

7

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

<build>
  <plugin>
    <groupId>com.atlassian.maven.plugins</groupId>
    <artifactId>maven-upload-plugin</artifactId>
    <version>1.1</version>
    <configuration>
       <resourceSrc>
             ${project.build.directory}/${project.build.finalName}.${project.packaging}
       </resourceSrc>
       <resourceDest>${jboss.deployDir}</resourceDest>
       <serverId>${jboss.host}</serverId>
       <url>${jboss.deployUrl}</url>
     </configuration>
  </plugin>
</build>

উপরে উল্লিখিত "$ {jboss.host}" এর মত চলকগুলি আমার ~ / .m2 / settings.xML এ সংজ্ঞায়িত করা হয়েছে এবং মাভেন প্রোফাইল ব্যবহার করে সক্রিয় করা হয়েছে। এই সমাধানটি JBoss- তে সীমাবদ্ধ নয়, এটি আমি আমার ভেরিয়েবলের নামকরণ করেছি। দেব, পরীক্ষা এবং লাইভের জন্য আমার একটি প্রোফাইল রয়েছে। সুতরাং পরীক্ষার পরিবেশে আমার কানটি কোনও jboss উদাহরণে আপলোড করতে আমি মৃত্যুদন্ড কার্যকর করব:

mvn upload:upload -P test

সেটিংস.এক্সএমএল থেকে একটি স্নিপেট এখানে রয়েছে:

<server>
  <id>localhost</id>
  <username>username</username>
  <password>{Pz+6YRsDJ8dUJD7XE8=} an encrypted password. Supported since maven 2.1</password>
</server>
...
<profiles>
  <profile>
    <id>dev</id>
    <properties>
      <jboss.host>localhost</jboss.host> 
      <jboss.deployDir>/opt/jboss/server/default/deploy/</jboss.deployDir>
      <jboss.deployUrl>scp://root@localhost</jboss.deployUrl>
    </properties>
  </profile>
  <profile>
    <id>test</id>
    <properties>
       <jboss.host>testserver</jboss.host>
       ...

দ্রষ্টব্য: এই প্লাগইনটি রয়েছে এমন আটলাসিয়ান মাভেন রেপো এখানে রয়েছে: https://maven.atlassian.com/public/

প্লাগইনটি যে সমস্ত বৈশিষ্ট্য সরবরাহ করে সেগুলি দেখার জন্য আমি উত্সগুলি ডাউনলোড করার এবং ডকুমেন্টেশনটির ভিতরে দেখার পরামর্শ দিই।

`


5

ঠিক আছে, মাভেনকে সূক্ষ্ম দানাদার কাজগুলি করার পক্ষে ভাল বলে মনে করা হয় না, এটি বাশ বা পিঁপড়ার মতো কোনও স্ক্রিপ্টিং ভাষা নয়, বরং এটি ঘোষণামূলক - আপনি বলেছিলেন - আমার যুদ্ধ বা কানের প্রয়োজন এবং আপনি এটি পেয়ে গেছেন। তবে যুদ্ধ বা কানের অভ্যন্তরের চেহারা কেমন হওয়া উচিত তা যদি আপনার কাস্টমাইজ করতে হয় তবে আপনার সমস্যা আছে। এটি কেবল পিঁপড়ার মতো প্রক্রিয়াজাতীয় নয়, তবে ঘোষণামূলক। এটির শুরুতে কিছু উপকার রয়েছে এবং শেষে প্রচুর পরিমাণে কনস হতে পারে।

আমার ধারণা প্রাথমিক সূচনাটি ছিল দুর্দান্ত প্লাগইনগুলি ছিল, "" কেবলমাত্র কাজ "তবে আপনি যদি মান-স্টাফ না করেন তবে বাস্তবতা ভিন্ন।

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


4

কপি-ম্যাভেন-প্লাগইন নিয়ে আমার খুব ভাল অভিজ্ঞতা হয়েছে । ম্যাভেন-রিসোর্স-প্লাগইনের তুলনায় এটিতে আরও অনেক সুবিধাজনক এবং সংক্ষিপ্ত বাক্য গঠন রয়েছে।


8
দুর্ভাগ্যক্রমে, কপি-ম্যাভেন-প্লাগইন ম্যাভেন 3.1.x এর সাথে সামঞ্জস্যপূর্ণ নয়
হাকান

2
ম্যাভেন ৩.১ এর সাথে সামঞ্জস্যতা ট্র্যাক করার বিষয়টি এখানে রয়েছে: github.com/evgeny-goldin/maven-plugins/issues/10
koppor

এই প্লাগইনটি ভুলে যান ... এর কাঁটাচামচ দেখুন
কুকল্টজে

4

স্বেচ্ছাসেবী ফাইলগুলি অনুলিপি করার একটি সাধারণ উপায় হ'ল মাভেন ওয়াগন পরিবহন বিমূর্তি ব্যবহার করা । প্রোটোকল পছন্দ মাধ্যমে এটি বিভিন্ন গন্তব্যস্থল সব ব্যবস্থা করতে সক্ষম file, HTTP, FTP, SCPবা WebDAV

কয়েকটি প্লাগইন রয়েছে যা ব্যবহারের মাধ্যমে ফাইলগুলি অনুলিপি করার সুবিধা সরবরাহ করে Wagon। সর্বাধিক উল্লেখযোগ্য:

  • অফ-অফ-বক্স ম্যাভেন ডিপ্লয় প্লাগইন

    নেই deploy-fileলক্ষ্য। এটি যথেষ্ট জটিল নয় তবে কাজটি সম্পন্ন করতে পারে:

    mvn deploy:deploy-file -Dfile=/path/to/your/file.ext -DgroupId=foo 
    -DartifactId=bar -Dversion=1.0 -Durl=<url> -DgeneratePom=false

    ব্যবহারের উল্লেখযোগ্য অসুবিধা Maven Deploy Pluginহ'ল এটি ম্যাভেন সংগ্রহস্থলগুলির সাথে কাজ করার জন্য মনোনীত করা হয়েছে। এটি নির্দিষ্ট কাঠামো এবং মেটাডেটা ধরে নিয়েছে। আপনি দেখতে পাচ্ছেন যে ফাইলটি নীচে রাখা হয়েছে foo/bar/1.0/file-1.0.extএবং চেকসাম ফাইল তৈরি করা হয়েছে। এই সমস্যা এড়ানোর কোনো উপায় নেই।

  • ওয়াগন মাভেন প্লাগইন

    upload-singleলক্ষ্যটি ব্যবহার করুন :

    mvn org.codehaus.mojo:wagon-maven-plugin:upload-single
    -Dwagon.fromFile=/path/to/your/file.ext -Dwagon.url=<url>

    Wagon Maven Pluginঅনুলিপি করার জন্য ব্যবহারটি সহজ এবং এটি বহুমুখী বলে মনে হয়।


উপরের উদাহরণগুলিতে <url>কোনও সমর্থিত প্রোটোকল হতে পারে। বিদ্যমান ওয়াগন সরবরাহকারীদের তালিকা দেখুন । উদাহরণ স্বরূপ

  • স্থানীয়ভাবে ফাইল অনুলিপি করা: file:///copy/to
  • দূরবর্তী হোস্ট চলমান ফাইল অনুলিপি করা SSH:scp://host:22/copy/to


উপরের উদাহরণগুলি কমান্ড লাইনে প্লাগইন পরামিতিগুলি পাস করে। বিকল্পভাবে, প্লাগইনগুলি সরাসরি কনফিগার করা যায় POM। তাহলে প্রার্থনাটি সহজভাবে হবে mvn deploy:deploy-file@configured-execution-id। অথবা এটি নির্দিষ্ট বিল্ড পর্বের সাথে আবদ্ধ হতে পারে।


অনুগ্রহ করে নোট করুন যে প্রোটোকলগুলি SCPকাজ করতে পছন্দ করে তার জন্য আপনার একটি এক্সটেনশন সংজ্ঞায়িত করতে হবে POM:

<build>
  [...]
  <extensions>
    <extension>
      <groupId>org.apache.maven.wagon</groupId>
      <artifactId>wagon-ssh</artifactId>
      <version>2.12</version>
    </extension>
  </extensions>


আপনি যে গন্তব্যটিতে অনুলিপি করছেন তার জন্য যদি প্রমাণীকরণের প্রয়োজন হয় তবে Serverসেটিংসের মাধ্যমে শংসাপত্রগুলি সরবরাহ করা যেতে পারে । repositoryId/ serverIdপ্লাগইনগুলিতে পাস করা অবশ্যই সেটিংসে সংজ্ঞায়িত সার্ভারের সাথে মেলে।


3

আমি কেবল ধরে নিতে পারি যে আপনার। {پروژې.server.config} বৈশিষ্ট্যটি কাস্টম সংজ্ঞায়িত কিছু এবং মান ডিরেক্টরি বিন্যাসের বাইরে।

যদি তা হয় তবে আমি অনুলিপি টাস্কটি ব্যবহার করব।


ধরা যাক আমি স্ট্যান্ডার্ড ডিরেক্টরি বিন্যাসে ফাইলগুলি রাখার যত্ন নিই। মাভেন কি কোনও জিপ / জারে নয়, লক্ষ্য হিসাবে সেগুলি অনুলিপি করতে পারবেন?
জোশুয়া ফক্স

2

আর একটি উপায় হ'ল এসেম্বলি প্লাগইন ব্যবহার করে এই জিনিসগুলিকে একটি আর্টিফ্যাক্টে বান্ডিল করা। তারপরে আপনি যেখানে চান ফাইলগুলি আনপ্যাক করতে নির্ভরতা প্লাগইন ব্যবহার করতে পারেন। শিল্পকর্মগুলি অনুলিপি করার জন্য নির্ভরতা প্লাগইনে কপির লক্ষ্যগুলিও রয়েছে।


1

আমি এই উত্তরের জন্য বিভিন্ন উত্স একসাথে করতে সক্ষম হয়েছি:

...
<repository>
    <id>atlassian</id>
    <name>Atlassian Repo</name>
    <url>https://maven.atlassian.com/content/repositories/atlassian-public</url>
</repository>
...
<dependency>
    <groupId>com.atlassian.maven.plugins</groupId>
    <artifactId>maven-upload-plugin</artifactId>
    <version>1.1</version>
</dependency>
...
<plugin>
    <groupId>com.atlassian.maven.plugins</groupId>
    <artifactId>maven-upload-plugin</artifactId>
    <version>1.1</version>
    <configuration>
        <serverId>jira-repo</serverId>
        <resourceSrc>
            ${project.build.directory}/${project.build.finalName}.${project.packaging}
        </resourceSrc>
        <resourceDest>opt/jira/webapps</resourceDest> <!-- note: no leading slash -->
        <url>scp://root@jira</url>
    </configuration>
</plugin>
...

থেকে ~/.m2/settings.xml:

...
<servers>
  <server>
    <id>jira-repo</id>
    <username>myusername</username>
    <password>mypassword</password>
  </server>
</servers>
...

তারপরে কমান্ডটি চালান: (-X ডিবাগের জন্য)

mvn -X upload:upload


-1

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


পিঁপড়া ম্যাভেনের মূল কার্যকারিতার সাথে সম্পর্কিত এবং ওয়াগনও এটির (যদিও এর চারপাশের প্লাগইন কোনও অফিসিয়াল মাভেন কোর প্লাগইন নয়)।
জেরোল্ডব্রোজার মনিকার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.