Làm thế nào để xây dựng dự án maven mà không có phiên bản?


80

Tôi có một dự án maven mà tôi muốn xây dựng mà không có phiên bản.

Bây giờ, khi tôi xây dựng dự án bằng maven, nó tạo ra cái này commonjerseylib-1.0.warnhưng tôi cần cái này commonjerseylib.warđược tạo.

Ngoài ra, tôi xóa <version>thẻ khỏi pom.xmlnhưng Maven vẫn đang tạo warvới phiên bản 1.0 theo mặc định.

Của tôi pom.xml:

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

Làm thế nào để xây dựng nó mà không có phiên bản?

Câu trả lời:


168

Bạn sẽ luôn cần số phiên bản cho một dự án, tuy nhiên có thể thay đổi tên của gói đã tạo (JAR, WAR, EAR, v.v.) thông qua <finalName>phần tử trong POM.

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

hoặc trong các phiên bản maven cũ hơn:

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

Theo mặc định, finalName là ${project.artifactId}-${project.version}, nhưng nó có thể được thay đổi thành một cái gì đó khác. Điều này sẽ chỉ ảnh hưởng đến tên của gói được tạo trong targetthư mục; tên tệp trong kho lưu trữ cục bộ và được tải lên kho lưu trữ từ xa sẽ luôn có số phiên bản.

Xem tài liệu tham khảo POM để biết thêm thông tin.


Đó là hoàn hảo, rõ ràng và sạch sẽ!
Thomas

7
Kể từ ít nhất Maven 3.0.3, $ {ArtifactId} không được dùng nữa để thay thế cho $ {project.artifactId}.
Glenn

2
@prunge: Cảm ơn bạn đã trả lời. Bạn có biết cách nào để làm điều đó vì nó ảnh hưởng đến tên tệp trong kho lưu trữ cục bộ và kho lưu trữ từ xa.
namalfernandolk

Lưu ý rằng nó không làm việc để ghi đè lên từ dòng lệnh như -Dproject.build.finalName=whatever- nếu bạn muốn để có thể xác định tên của jar trên dòng lệnh, xem stackoverflow.com/a/13877971/587365
Andrew Spencer

12

trong plugin maven war trong xây dựng, thay đổi

<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>

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.