Jak zbudować projekt Mavena bez wersji?

81

Mam projekt maven, który chcę zbudować bez wersji.

Teraz, kiedy buduję projekt za pomocą maven, tworzy to, commonjerseylib-1.0.warale potrzebuję tego commonjerseylib.wardo utworzenia.

Oprócz tego usuwam <version>tag z, pom.xmlale Maven nadal tworzy warw wersji 1.0 domyślnie.

Mój pom.xml:

      <modelVersion>4.0.0</modelVersion>
      <groupId>commonjerseylib</groupId>
      <artifactId>commonjerseylib</artifactId>
      <packaging>ear</packaging>
      <name>commonjerseylib</name>
      <!--<version>1.0</version>-->

Jak to zbudować bez wersji?

user1137387
źródło

Odpowiedzi:

169

Zawsze będziesz potrzebować numeru wersji projektu, jednak istnieje możliwość zmiany nazwy generowanego pakietu (JAR, WAR, EAR, itp.) Poprzez <finalName>element w POM.

<project>
    ...
    <build>
        ...
        <finalName>${project.artifactId}</finalName>
        ...
    </build>
    ...
</project>

lub w starszych wersjach maven:

        ...
        <finalName>${artifactId}</finalName>
        ...

Domyślnie finalName to ${project.artifactId}-${project.version}, ale można to zmienić na coś innego. Wpłynie to tylko na nazwę pakietu utworzonego w targetkatalogu; nazwa pliku w lokalnym repozytorium i przesłana do zdalnych repozytoriów zawsze będzie miała numer wersji.

Więcej informacji można znaleźć w dokumentacji referencyjnej POM .

przycinać
źródło
To jest idealne, jasne i czyste!
Thomas
7
Od przynajmniej Maven 3.0.3 $ {artifactId} jest przestarzałe i zastępuje $ {project.artifactId}.
Glenn,
2
@prunge: Dziękuję za odpowiedź. Czy znasz jakiś sposób, aby to zrobić, ponieważ wpływa to na nazwę pliku w lokalnym repozytorium i zdalnych repozytoriach.
namalfernandolk
Zauważ, że nie działa nadpisywanie z wiersza poleceń, na przykład -Dproject.build.finalName=whatever- jeśli chcesz mieć możliwość określenia nazwy słoika w wierszu poleceń, zobacz stackoverflow.com/a/13877971/587365
Andrew Spencer
12

in maven war plugin w build, change

<warName> ${artifactId} </warName>

        <build>
           ..........
             <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.3</version>
                <configuration>
                    <!-- web.xml is not mandatory since JavaEE 5 -->
                    <failOnMissingWebXml>false</failOnMissingWebXml>
                    <warName>${artifactId}</warName>
                </configuration>
            </plugin>
         .............
       <build>
kuhajeyan
źródło
0

Naprawiłem to za pomocą poniższych linii kodu w pom

... ... $ {project.artifactId} ... ...
Shahid Hussain Abbasi
źródło