মাভেন: এই প্রকল্পের প্যাকেজিং বিল্ড আর্টিক্যাক্টে কোনও ফাইল বরাদ্দ করেনি


113

আমি ম্যাক 10.6.6 এ ম্যাভেন 3.0.3 ব্যবহার করছি। আমার একটি জেআর প্রকল্প রয়েছে এবং আমি যখন "এমভিএন ক্লিন ইনস্টল: ইনস্টল" কমান্ডটি চালাচ্ছি তখন আমি ত্রুটি পেয়ে যাচ্ছি,

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-install-plugin:2.3.1:install (default-cli) on project StarTeamCollisionUtil: The packaging for this project did not assign a file to the build artifact -> [Help 1]

এর অর্থ কী এবং আমি কীভাবে এটি ঠিক করতে পারি? নীচে আমার pom.xML রয়েছে। আমাকে কী কী অন্যান্য তথ্য সহায়ক হবে তা আমাকে জানান এবং আমি এই পোস্টটি সম্পাদনা করব। ধন্যবাদ, - ডেভ

<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.myco.starteam.util</groupId>
<artifactId>StarTeamCollisionUtil</artifactId>
<packaging>jar</packaging>
<name>StarTeam Collision Util</name>
<description>
    The StarTeam Collision Utility provides developers and release engineers alike the ability to
    compare files attached to a set of CRs to see if conflicts exist in the change set.
</description>
<version>1.0-SNAPSHOT</version>
<url>http://cm-build.myco.com:8080/hudson/view/Tools/job/StarTeamCollisionUtil - TRUNK/</url>
<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<repositories>
    <repository>
        <id>myco-sonatype-nexus-snapshots</id>
        <name>MyCo Sonatype-Nexus Snapshots</name>
        <url>http://sonatype.myco.com/nexus/content/repositories/snapshots/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>starteam</groupId>
        <artifactId>starteam</artifactId>
        <version>1.1.0</version>
        <type>jar</type>
        <scope>system</scope>
        <systemPath>${basedir}/lib/starteam110.jar</systemPath>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.8.2</version>
    </dependency>
    <dependency>
        <groupId>org.apache.ant</groupId>
        <artifactId>ant</artifactId>
        <version>1.8.1</version>
    </dependency>
    <dependency>
        <groupId>javax.mail</groupId>
        <artifactId>mail</artifactId>
        <version>1.4.1</version>
        <type>jar</type>
        <scope>compile</scope>
    </dependency>
</dependencies>
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.8.1</version>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-site-plugin</artifactId>
            <version>3.0-beta-3</version>
            <configuration>
                <reportPlugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-surefire-report-plugin</artifactId>
                        <version>2.5</version>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-javadoc-plugin</artifactId>
                        <version>2.7</version>
                        <configuration>
                            <linksource>true</linksource>
                        </configuration>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-jxr-plugin</artifactId>
                        <version>2.2</version>
                    </plugin>
                    <plugin>
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>versions-maven-plugin</artifactId>
                        <version>1.2</version>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-project-info-reports-plugin</artifactId>
                        <version>2.3.1</version>
                        <reportSets>
                            <reportSet>
                                <reports>
                                    <report>index</report>
                                    <report>dependencies</report>
                                    <report>dependency-management</report>
                                    <report>cim</report>
                                    <report>issue-tracking</report>
                                    <report>license</report>
                                    <report>scm</report>
                                </reports>
                            </reportSet>
                        </reportSets>
                    </plugin>
                </reportPlugins>
            </configuration>
        </plugin>
    </plugins>
</build>
<distributionManagement>
    <repository>
        <id>sonatype-nexus</id>
        <url>http://sonatype.myco.com/nexus/content/repositories/snapshots/</url>
    </repository>
</distributionManagement>
<scm>
    <url>https://starteam.cmass.myco.com/BorlandStarTeam/BorlandStarTeam.jsp</url>
</scm>
<issueManagement>
    <system>StarTeam</system>
    <url>https://starteam.cmass.myco.com/BorlandStarTeam/BorlandStarTeam.jsp</url>
</issueManagement>
<ciManagement>
    <system>Hudson</system>
    <url>http://cm-build.myco.com:8080/hudson/</url>
</ciManagement>
</project>

উত্তর:


168

আমি জানি না এটি উত্তর কিনা না তবে এটি আপনাকে সঠিক দিকে নিয়ে যেতে পারে ...

কমান্ডটি install:installআসলে মাভেন-ইনস্টল-প্লাগইনটির একটি লক্ষ্য । এটি installম্যাভেন লাইফসাইकल পর্বের চেয়ে আলাদা ।

ম্যাভেন লাইফাইসাইকেল পর্যায়গুলি এমন একটি বিল্ডের পদক্ষেপ যা নির্দিষ্ট প্লাগইনগুলি তাদেরকে আবদ্ধ করতে পারে। আপনি যখন একক লাইফাইসাইকেল পর্যায়ে যাবেন তখন বিভিন্ন প্লাগইনগুলি থেকে অনেকগুলি বিভিন্ন লক্ষ্য কার্যকর করতে পারে।

কমান্ডটি যা এটিকে ফুটিয়ে তোলে ...

mvn clean install

এর থেকে আলাদা...

mvn clean install:install

প্রাক্তন প্রতিটি চক্রের সমস্ত লক্ষ্য চালাবে এবং ইনস্টল সহ অন্তর্ভুক্ত থাকবে (যেমন সংকলন, প্যাকেজ, পরীক্ষা ইত্যাদি)। পরেরটি এমনকি আপনার কোডটি সংকলন বা প্যাকেজ করবে না, এটি কেবলমাত্র একটি লক্ষ্য চালাবে। এই কিন্ডা ব্যাতিক্রম করে, ব্যতিক্রম তাকিয়ে; এটি সম্পর্কে আলোচনা:

স্টারটিমকলিউশন: এই প্রকল্পের প্যাকেজিং বিল্ট আর্টিক্টকে কোনও ফাইল বরাদ্দ দেয়নি

প্রাক্তনটি চেষ্টা করুন এবং আপনার ত্রুটি কেবল দূরে চলে যেতে পারে!


আমি বাঁশ দিয়ে দৌড়াচ্ছি, তবে আমি এমভিএন ইনস্টল কিছুই দেখতে পাচ্ছি না: কনফিগারেশনে যে কোনও জায়গা ইনস্টল করুন
প্র_এ

96

টিএল; ডিআর এই সমস্যাটি সমাধান করতে প্যাকেজিং প্লাগইন আগে যেমন, jarপ্যাকেজিং ব্যবহারের জন্য maven-jar-pluginনিম্নলিখিত হিসাবে অনুরোধ করুন:

mvn jar:jar install:install

অথবা

mvn jar:jar deploy:deploy 

আপনি যদি সত্যিই মোতায়েন করা প্রয়োজন।

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


ব্যাখ্যা

কিছু ক্ষেত্রে আপনি সরাসরি কোনও লক্ষ্য install:installবা deploy:deployলক্ষ্য চালাতে চান (এটি maven-deploy-plugin, deployগোলটি, মাভেন deploy ফেজ নয় ) এবং আপনি বিরক্তিকর হয়ে উঠবেন The packaging for this project did not assign a file to the build artifact

একটি সর্বোত্তম উদাহরণ হ'ল সিআই জব (জেনকিনস বা বাঁশের কাজ, উদাহরণস্বরূপ) যেখানে বিভিন্ন পদক্ষেপে আপনি বিভিন্ন দিক সম্পর্কে চালনা / যত্ন নিতে চান:

  • প্রথম পদক্ষেপটি mvn clean installহ'ল একটি , পরীক্ষা করা এবং পরীক্ষার কভারেজ সম্পাদন
  • দ্বিতীয় ধাপটি হ'ল একটি মানের প্রোফাইলের উপর ভিত্তি করে একটি সোনারকুব বিশ্লেষণ হবে, উদাহরণস্বরূপ mvn sonar:sonarআরও বিকল্পগুলি
  • তারপরে, এবং কেবলমাত্র সফল পরীক্ষাগুলি কার্যকর করার পরে এবং মানের গেটটি পাস করার পরে, আপনি চূড়ান্ত প্রকল্পের নিদর্শনগুলিতে আপনার মাভেন এন্টারপ্রাইজ সংগ্রহস্থলে স্থাপন করতে চান, তবুও আপনি mvn deployআবার চালাতে চান না , কারণ এটি আবার পূর্ববর্তী পর্যায়গুলি কার্যকর করে (এবং সংকলন, পরীক্ষা) , ইত্যাদি) এবং আপনি চান আপনার বিল্ড কার্যকর হতে পারে তবে তত দ্রুত

হ্যাঁ, আপনি কমপক্ষে স্কিপিং পরীক্ষাগুলি (সংকলন এবং সম্পাদন, এর মাধ্যমে -Dmaven.test.skip=true) বা কোনও নির্দিষ্ট প্রোফাইলের সাথে খেলতে পারবেন (যতগুলি সম্ভব প্লাগিন এড়িয়ে যেতে) তবে এটি চালানো আরও সহজ এবং স্পষ্ট mvn deploy:deploy

তবে এটি উপরের ত্রুটিটি দিয়ে ব্যর্থ হবে, কারণ প্লাগইন FAQ দ্বারাও নির্দিষ্ট করা হয়েছে :

প্যাকেজিং-পর্বের সময় সমস্ত একত্রিত হয়ে প্রসঙ্গে রাখা হয়। এই পদ্ধতির সাহায্যে মাভেন নিশ্চিত করতে পারে যে maven-install-pluginএবং maven-deploy-pluginএকই সেট ফাইলগুলি অনুলিপি / আপলোড করছে। সুতরাং যখন আপনি কেবল সম্পাদন করেন deploy:deploy, তারপরে প্রসঙ্গে কোনও ফাইল রাখা হয়নি এবং মোতায়েন করার মতো কিছুই নেই।

প্রকৃতপক্ষে, deploy:deployপূর্ববর্তী পর্যায়গুলি (বা পূর্ববর্তী প্লাগইন / লক্ষ্য নির্বাহ) দ্বারা বিল্ড প্রসঙ্গে রেখে যাওয়া কিছু রানটাইম তথ্য প্রয়োজন।

এটি একটি সম্ভাব্য বাগ হিসাবে রিপোর্ট করেছে MDEPLOY-158:: মোতায়েন: স্থাপন কেবলমাত্র মাভেন রিমোট রেপোতে নিদর্শন নিযুক্ত করার জন্য কাজ করে না

তবে সমস্যা হিসাবে নয় বলে প্রত্যাখ্যান করা হয়েছে।

এর deployAtEndকনফিগারেশন বিকল্পটি maven-deploy-pluginকোনও নির্দিষ্ট দৃশ্যেও সহায়তা করবে না কারণ আমাদের কার্যকর করার জন্য মধ্যবর্তী কাজের পদক্ষেপ রয়েছে:

প্রতিটি প্রকল্প তার নিজস্ব মোতায়েন-পর্বের সময় বা মাল্টিমিডুল বিল্ডের শেষে স্থাপন করা উচিত। যদি সেট করা থাকে trueএবং বিল্ডটি ব্যর্থ হয় তবে চুল্লি প্রকল্পগুলির কোনওটিই মোতায়েন করা হয়নি। (পরীক্ষামূলক)

তো, কীভাবে এটি ঠিক করবেন?
এই জাতীয় অনুরূপ তৃতীয় / শেষ ধাপে কেবল নিম্নলিখিতটি চালান:

mvn jar:jar deploy:deploy

maven-jar-pluginআপনার বিল্ড অংশ হিসেবে কোনো বয়াম পুনরায় তৈরি করা হবে না, তার ধন্যবাদ forceCreationবিকল্প সেটে falseডিফল্ট ভাবে:

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

তবে এটি আমাদের জন্য বিল্ড প্রসঙ্গটি সুন্দরভাবে তৈরি করবে এবং deploy:deployখুশি করবে। এড়ানোর জন্য কোনও পরীক্ষা নেই, যোগ করার জন্য কোনও প্রোফাইল নেই। আপনার যা প্রয়োজন: গতি।


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

mvn validate jar:jar deploy:deploy

তবুও আরও একটি অতিরিক্ত নোট: যদি আপনার না থাকে jarতবে বলুন, warপ্যাকেজিং করুন, war:warপরিবর্তে ইনস্টল / মোতায়েনের আগে ব্যবহার করুন।

উপরে উল্লিখিত হিসাবে গোছা , মাল্টি মডিউল প্রকল্পগুলিতে আচরণ পরীক্ষা করুন।


8
এই সঠিক দৃশ্যের মধ্যে দৌড়ে। কল্পনাপ্রসূত রাইটিং আপ - প্ল্যাটফর্মের প্রায়শই জিজ্ঞাসিত প্রশ্নাবলীর পরিবর্তে এটির মোটামুটি সংশ্লেষ হওয়া উচিত "আপনি এটি করতে পারবেন না" ব্যাখ্যাটি।
মার্কডিজিভারগুলি

কে ভেবেছিল যে জারের
পাত্রটি সর্বোপরি

মিটলি-মডিউল প্রকল্পগুলির জন্য আমার সমাধান দেখুন: stackoverflow.com/a/57824874/318174
অ্যাডাম জেন্ট

এই সমাধানটি আমার বহু-মডিউল প্রকল্প @ অ্যাডামজেন্ট
কারাকয়েস

দুর্দান্ত ব্যাখ্যা। আমার জেনকিন্স সার্ভারের সাথে আমার দৃশ্যের বর্ণনা দেওয়া।
উইম্নাত

14

এই সমস্যার মুখোমুখি হওয়া অন্যদের সহায়তা করার জন্য এই উত্তরটি খুব পুরানো প্রশ্নে।

আইডিই Javaব্যবহার করে আমার প্রকল্পে কাজ করার সময় আমি এই ব্যর্থ ত্রুটির মুখোমুখি হয়েছি IntelliJ IDEA

Failed to execute goal org.apache.maven.plugins:maven-install-plugin:2.4:install (default-cli) on project getpassword: The packaging for this project did not assign a file to the build artifact

এটি ব্যর্থ হয়, যখন আমি install:installনীচে চয়ন করি Plugins - install, নীচের চিত্রের লাল তীরের সাথে নির্দেশিত।

ভুল নির্বাচন চয়ন করুন

আমি উপরের চিত্রের installনীচে নির্বাচিতগুলি চালানোর পরে Lifecycle, সমস্যাটি চলে গেল এবং আমার ম্যাভেন ইনস্টলটি কমপাইল সফলভাবে বিল্ড করুন।


6

আমার একই সমস্যা আছে। আমার জন্য ত্রুটির বার্তাটি সম্পূর্ণ নয়। তবে আমার ক্ষেত্রে, আমি উত্সগুলি সহ প্রজন্মের জারে যুক্ত করেছি। এই কোডটি pom.xml এ রেখে:

<build> 
    <pluginManagement>
        <plugins>
            <plugin>
                <artifactId>maven-source-plugin</artifactId>
                <version>2.1.2</version>
                <executions>
                    <execution>
                        <phase>deploy</phase>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </pluginManagement>
</build>

সুতরাং মোতায়েনের পর্যায়ে আমি উত্সটি সম্পাদন করি: জার লক্ষ্য যা উত্স সহ জার উত্পাদন করে। বিল্ড সাফল্যের সাথে মোতায়েনের সমাপ্তি


2

আপনি অবশ্যই লক্ষ্য ফাইলটি সাফ করুন যেমন জারে এবং অন্যান্য সি তে: আপনার ফোল্ডারটি .m2 এ চালান যেখানে এটি ইনস্টল করুন এবং জার ফাইলটি মুছুন, স্ন্যাপফট ফাইল এবং টার্গেট ফাইলগুলি মুছুন তারপরে আপনি যে অ্যাপ্লিকেশনটি পেয়েছেন তা সাফ করুন


আচ্ছা একটি আংশিক সমাধান।
জ্যাস্পার ল্যানখোরস্ট

2

মেভেন-ইনস্টল-প্লাগইন সংস্করণ 3.0.0-M1 (বা অনুরূপ) ব্যবহার করার সময় এই ত্রুটিটি দেখা যাচ্ছে

ইতিমধ্যে উপরে উল্লিখিত হয়েছে এবং নীচের প্লাগ-ইন সংস্করণটি এখানে কাজ করে:

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-install-plugin</artifactId>
        <version>2.5.2</version>
    </plugin>

1

@ এ_ডি-মাত্তিওর উত্তরটি মাল্টিমোডিউলগুলি নন-এর জন্য কাজ করে তবে আমার কাছে মাল্টিমিডুলগুলির জন্য একটি সমাধান রয়েছে।

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

সুতরাং কৌশলটি হ'ল এমন একটি প্রোফাইল তৈরি করা যা উপরেরটি সক্রিয় হয় যখন আপনি কেবল স্থাপন করতে চান।

নীচে আমার কোনও প্রকল্পের একটি উদাহরণ যা ছায়া প্লাগইন ব্যবহার করে এবং এর ফলে আমাকে ওভাররাইট না করার জন্য জার প্লাগইনটি পুনরায় ওভাররাইড করতে হয়েছিল:

    <profile>
      <id>deploy</id>
      <activation>
        <property>
          <name>buildStep</name>
          <value>deploy</value>
        </property>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <executions>
              <execution>
                <id>default-compile</id>
                <phase>none</phase>
              </execution>
              <execution>
                <id>default-testCompile</id>
                <phase>none</phase>
              </execution>
              <execution>
                <id>test-compile</id>
                <phase>none</phase>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <executions>
              <execution>
                <id>default-test</id>
                <phase>none</phase>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-install-plugin</artifactId>
            <executions>
              <execution>
                <id>default-install</id>
                <phase>none</phase>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-resources-plugin</artifactId>
            <executions>
              <execution>
                <id>default-resources</id>
                <phase>none</phase>
              </execution>
              <execution>
                <id>default-testResources</id>
                <phase>none</phase>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <executions>
              <execution>
                <id>default</id>
                <phase>none</phase>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <executions>
              <execution>
                <id>default-jar</id>
                <configuration>
                  <forceCreation>false</forceCreation>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>

এখন যদি আমি mvn deploy -Pdeployএটি চালনা করি তবে এটি কেবল জার চালাবে এবং প্লাগইন মোতায়েন করবে।

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


0

আমার একই সমস্যা ছিল তবে আমি প্রাথমিকভাবে এমভিএন ইনস্টল চালিয়েছি ( ইনস্টল নয় : ইনস্টল করুন যেমনটি আগে উল্লেখ করা হয়েছিল)।

সমাধানটি অন্তর্ভুক্ত করা হয়:

 <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-install-plugin</artifactId>
        <version>2.5.2</version>
 </plugin>

প্লাগইন পরিচালনা বিভাগে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.