> -----Original Message----- > From: John Casey [mailto:[EMAIL PROTECTED] > Sent: mercredi 16 novembre 2005 16:01 > To: Maven Developers List > Subject: Re: svn commit: r344386 - /maven/components/trunk/maven- > project/src/main/java/org/apache/maven/project/artifact/ProjectArtifactMet > adata.java > > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > Hi, Vincent > > I think there is still an important distinction between the two: the > handling of dynamic information. In development situations where it's > most convenient to share development artifacts via a remote repository, > you should always preserve that dynamism. This is critical to keep > development going forward; otherwise, your deployed snapshot may not > pickup the dependency on my (more recently deployed) artifact update. > > In other words, deploying an artifact is not always an act of releasing. > > This is even true when you consider the user's perspective, since end > users probably won't see these snapshots, and developer-users will need > the full SNAPSHOT capability. Resolving everything down to a static > version on each deploy would result in updated artifacts being ignored > transitively, and non-direct dependencies being added to a given POM in > order to forcibly bring those snapshots back into the mix. > > I agree that the two actions are conceptually similar, but I don't see > any advantage in combining them. The deployment code is reused by the > release plugin, so there are no dangers associated with copy-and-paste > programming.
You're probably right! One is about sharing artifacts within the dev team and the other is about making them user-visible. Thanks -Vincent > Vincent Massol wrote: > | Thanks John for the feedback. > | > | I still have trouble understanding what's the difference between a > deploy > | and a release and I would think we'd need to merge both concept into > one in > | the future. > | > | If you think about it, the result of both actions is the same from a > user > | point of view. The only differences are the extra steps during a > release but > | we could decide not to take those extra steps (tagging, sending an > email, > | etc) when we release a snapshot. > | > | To summarize, I think having a single concept of release (or deploy) > would > | be enough and it should cover both snapshot and proper versions. > | > | -Vincent > | > | > |>-----Original Message----- > |>From: John Casey [mailto:[EMAIL PROTECTED] > |>Sent: mercredi 16 novembre 2005 04:00 > |>To: Maven Developers List > |>Subject: Re: svn commit: r344386 - /maven/components/trunk/maven- > |>project/src/main/java/org/apache/maven/project/artifact/ProjectArtifactM > et > |>adata.java > |> > | deployment doesn't guarantee reproducibility. I already discussed this > | with you on IRC, but I'm replicating my answer here to keep the list up > | to date. > | > | The only time you have strong requirements for reproducibility in builds > | is at release time, when all -SNAPSHOT dependencies should already have > | been resolved to concrete versions (even if these versions are the > | timestamped alter egos of the snapshot artifacts). When you're merely > | deploying, you're not making any assertion about the build being > | static...particularly when you deploy with SNAPSHOT dependencies. In > | those cases, it's important that your artifact's users be able to retain > | that flexibility in choosing dependency versions given by SNAPSHOTs. > | > | Deploying is still a distinct task from releasing, since you may deploy > | a snapshot artifact in order to share it among team members, or CI > | servers, without releasing it. In this case, it's understood that this > | is a development copy, and you get what you ask for with any SNAPSHOT > | dependencies. That is, dynamically resolved versions...even dynamically > | re-resolved versions, if the artifact is used more than once over time. > | > | Cheers, > | > | John > | > | Vincent Massol wrote: > | | Thanks John, > | | > | | When I deploy now the resolved version is 0.7-SNASPHOT and not the > | | timestamped version. > | | > | | It may work but that means that builds will not be reproducible, > | because the > | | correct dependency version will be chosen at runtime according to the > | | available snapshots, right? > | | > | | Thanks > | | -Vincent > | | > | | > | |>-----Original Message----- > | |>From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] > | |>Sent: mardi 15 novembre 2005 17:15 > | |>To: commits@maven.apache.org > | |>Subject: svn commit: r344386 - /maven/components/trunk/maven- > | > |>project/src/main/java/org/apache/maven/project/artifact/ProjectArtifactM > | et > | |>adata.java > | |> > | |>Author: jdcasey > | |>Date: Tue Nov 15 08:15:21 2005 > | |>New Revision: 344386 > | |> > | |>URL: http://svn.apache.org/viewcvs?rev=344386&view=rev > | |>Log: > | |>Decoupling ${version} expressions from POM version before resolving it > | to > | |>a buildnumber/timestamp on install or deploy. > | |> > | |>Modified: > | |> maven/components/trunk/maven- > | > |>project/src/main/java/org/apache/maven/project/artifact/ProjectArtifactM > | et > | |>adata.java > | |> > | |>Modified: maven/components/trunk/maven- > | > |>project/src/main/java/org/apache/maven/project/artifact/ProjectArtifactM > | et > | |>adata.java > | |>URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven- > | > |>project/src/main/java/org/apache/maven/project/artifact/ProjectArtifactM > | et > | |>adata.java?rev=344386&r1=344385&r2=344386&view=diff > | > |>======================================================================== > | == > | |>==== > | |>--- maven/components/trunk/maven- > | > |>project/src/main/java/org/apache/maven/project/artifact/ProjectArtifactM > | et > | |>adata.java (original) > | |>+++ maven/components/trunk/maven- > | > |>project/src/main/java/org/apache/maven/project/artifact/ProjectArtifactM > | et > | |>adata.java Tue Nov 15 08:15:21 2005 > | |>@@ -34,6 +34,8 @@ > | |> import java.io.FileReader; > | |> import java.io.FileWriter; > | |> import java.io.IOException; > | |>+import java.io.StringReader; > | |>+import java.io.StringWriter; > | |> > | |> /** > | |> * Attach a POM to an artifact. > | |>@@ -85,10 +87,17 @@ > | |> try > | |> { > | |> reader = new FileReader( file ); > | |>+ StringWriter sWriter = new StringWriter(); > | |>+ IOUtil.copy( reader, sWriter ); > | |>+ > | |>+ String modelSrc = sWriter.toString().replaceAll( > | |>"\\$\\{(pom\\.|project\\.)?version\\}", artifact.getBaseVersion() ); > | |>+ > | |>+ StringReader sReader = new StringReader( modelSrc ); > | |>+ > | |> writer = new FileWriter( destination ); > | |> > | |> MavenXpp3Reader modelReader = new MavenXpp3Reader(); > | |>- Model model = modelReader.read( reader ); > | |>+ Model model = modelReader.read( sReader ); > | |> model.setVersion( artifact.getVersion() ); > | |> > | |> DistributionManagement distributionManagement = > | |>model.getDistributionManagement(); > | |> > | | > | | > | | > | | > | | --------------------------------------------------------------------- > | | To unsubscribe, e-mail: [EMAIL PROTECTED] > | | For additional commands, e-mail: [EMAIL PROTECTED] > | | > | | > | | > > - --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > | --------------------------------------------------------------------- > | To unsubscribe, e-mail: [EMAIL PROTECTED] > | For additional commands, e-mail: [EMAIL PROTECTED] > > > > -----BEGIN PGP SIGNATURE----- > Version: GnuPG v1.2.6 (GNU/Linux) > > iD8DBQFDe0miK3h2CZwO/4URAi/OAJ9/LuzlzLD2/SrKzIN+jXsXFUd3RgCfROy6 > WHFX3xSbFR/aAxXKLPmiOHY= > =0HSa > -----END PGP SIGNATURE----- > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]