Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Using +publish or +publishLocal leads to double publication and errors #100

Open
gaeljw opened this issue Feb 26, 2025 · 1 comment
Open

Comments

@gaeljw
Copy link

gaeljw commented Feb 26, 2025

Considering a project configured with 3 Scala versions as axis:

val scala211 = "2.11.12"
val scala212 = "2.12.15"
val scala213 = "2.13.7"

scalaVersion := scala212

lazy val core = (projectMatrix in file("xxx"))
  .jvmPlatform(scalaVersions = Seq(scala211, scala212, scala213))

If I run publishLocal I can see it publishes artifacts only once per Scala version:

[info]  published my-project-xxx_2.12 to /home/my-user/.ivy2/local/com.groupid/my-project-xxx_2.12/0.0.0+469-310ddce6+20250226-1157-SNAPSHOT/poms/my-project-xxx_2.12.pom
[info]  published my-project-xxx_2.12 to /home/my-user/.ivy2/local/com.groupid/my-project-xxx_2.12/0.0.0+469-310ddce6+20250226-1157-SNAPSHOT/jars/my-project-xxx_2.12.jar
...
[info]  published my-project-xxx_2.11 to /home/my-user/.ivy2/local/com.groupid/my-project-xxx_2.11/0.0.0+469-310ddce6+20250226-1157-SNAPSHOT/poms/my-project-xxx_2.11.pom
[info]  published my-project-xxx_2.11 to /home/my-user/.ivy2/local/com.groupid/my-project-xxx_2.11/0.0.0+469-310ddce6+20250226-1157-SNAPSHOT/jars/my-project-xxx_2.11.jar
...
[info]  published my-project-xxx_2.13 to /home/my-user/.ivy2/local/com.groupid/my-project-xxx_2.13/0.0.0+469-310ddce6+20250226-1157-SNAPSHOT/poms/my-project-xxx_2.13.pom
[info]  published my-project-xxx_2.13 to /home/my-user/.ivy2/local/com.groupid/my-project-xxx_2.13/0.0.0+469-310ddce6+20250226-1157-SNAPSHOT/jars/my-project-xxx_2.13.jar

However, running +publishLocal, it publishes once for each Scala version and publishes all versions one time more (as part of the default Scala version build in my understanding, 2.12 in my case):

[info] Setting Scala version to 2.11.12 on 2 projects.
[info] Excluded 5 projects, run ++ 2.11.12 -v for more details.
...
[info]  published my-project-xxx_2.11 to /home/my-user/.ivy2/local/com.groupid/my-project-xxx_2.11/0.0.0+469-310ddce6+20250226-1204-SNAPSHOT/poms/my-project-xxx_2.11.pom
[info]  published my-project-xxx_2.11 to /home/my-user/.ivy2/local/com.groupid/my-project-xxx_2.11/0.0.0+469-310ddce6+20250226-1204-SNAPSHOT/jars/my-project-xxx_2.11.jar
...
[info] Setting Scala version to 2.12.15 on 3 projects.
[info] Excluded 4 projects, run ++ 2.12.15 -v for more details.
...
[info]  published my-project-xxx_2.11 to /home/my-user/.ivy2/local/com.groupid/my-project-xxx_2.11/0.0.0+469-310ddce6+20250226-1204-SNAPSHOT/poms/my-project-xxx_2.11.pom
[info]  published my-project-xxx_2.11 to /home/my-user/.ivy2/local/com.groupid/my-project-xxx_2.11/0.0.0+469-310ddce6+20250226-1204-SNAPSHOT/jars/my-project-xxx_2.11.jar
...
[info]  published my-project-xxx_2.13 to /home/my-user/.ivy2/local/com.groupid/my-project-xxx_2.13/0.0.0+469-310ddce6+20250226-1204-SNAPSHOT/poms/my-project-xxx_2.13.pom
[info]  published my-project-xxx_2.13 to /home/my-user/.ivy2/local/com.groupid/my-project-xxx_2.13/0.0.0+469-310ddce6+20250226-1204-SNAPSHOT/jars/my-project-xxx_2.13.jar
...
[info]  published my-project-xxx_2.12 to /home/my-user/.ivy2/local/com.groupid/my-project-xxx_2.12/0.0.0+469-310ddce6+20250226-1204-SNAPSHOT/poms/my-project-xxx_2.12.pom
[info]  published my-project-xxx_2.12 to /home/my-user/.ivy2/local/com.groupid/my-project-xxx_2.12/0.0.0+469-310ddce6+20250226-1204-SNAPSHOT/jars/my-project-xxx_2.12.jar
...
[info] Setting Scala version to 2.13.7 on 2 projects.
[info] Excluded 5 projects, run ++ 2.13.7 -v for more details.
...
[info]  published my-project-xxx_2.13 to /home/my-user/.ivy2/local/com.groupid/my-project-xxx_2.13/0.0.0+469-310ddce6+20250226-1204-SNAPSHOT/poms/my-project-xxx_2.13.pom
[info]  published my-project-xxx_2.13 to /home/my-user/.ivy2/local/com.groupid/my-project-xxx_2.13/0.0.0+469-310ddce6+20250226-1204-SNAPSHOT/jars/my-project-xxx_2.13.jar

Is that an expected behaviour? If so, I would suggest documenting it explicitly.

The issue with this behaviour is that for releases, you can end up with errors from the artifact repository because uploading an already published version is forbidden. Like [error] java.io.IOException: destination file exists and overwrite == false.

@gaeljw
Copy link
Author

gaeljw commented Feb 26, 2025

Sounds partially related to #75 and #20

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant