Cơ chế cơ bản được sử dụng để chỉ ra phiên bản của thư viện Scala nào được biên dịch chống lại là thêm _ < scala-version > vào tên của thư viện. Cách tiếp cận khá đơn giản này cho phép khả năng tương tác với người dùng Maven, Ant và các công cụ xây dựng khác. - sbt Documentation: Cross-Build Publishing ConventionsTại sao quy ước xây dựng chéo thêm phiên bản scala vào artifactId?
Trong khi đây là một cách tiếp cận đơn giản, khả năng tương tác với Maven và các công cụ xây dựng khác lá gì đó để được mong muốn. Bởi vì artifactId
khác (ví dụ: scalatest_2.9.0
và scalatest_2.10.0
), Maven coi chúng là các tạo tác khác nhau. Do đó, cơ chế phân giải phụ thuộc của Maven bị tổn hại và nhiều phiên bản của cùng một tạo tác (được xây dựng dựa trên các phiên bản scala khác nhau) có thể làm gió lên đường dẫn lớp.
Tại sao không đặt phiên bản scala trong trình phân loại? Điều này có vẻ là một trong những trường hợp sử dụng chính định cho trình phân loại:
Trình phân loại cho phép [Maven] phân biệt các tạo phẩm được xây dựng từ cùng một POM nhưng khác về nội dung của chúng. Là một động lực cho yếu tố này, hãy xem xét ví dụ một dự án cung cấp một mục tiêu giả tạo JRE 1.5 nhưng đồng thời cũng là một tạo phẩm vẫn hỗ trợ JRE 1.4. Tạo phẩm đầu tiên có thể được trang bị với trình phân loại jdk15 và phiên bản thứ hai với jdk14 sao cho khách hàng có thể chọn cái nào để sử dụng. - Maven Documentation: POM Reference
Tôi nhớ quyết định này được đưa ra, một vài năm trước và tôi gần như chắc chắn rằng việc sử dụng trình phân loại đã được thảo luận và từ chối, với tất cả đồng ý rằng đó không phải là giải pháp khả thi. Những gì tôi không thể nhớ là tại sao! –
@SethTisue Cảm ơn gợi ý. –