Re: pvn package command dependencies error
On Tue, May 04, 2021 at 12:29:20PM +0200, Benjamin Marwell wrote: > you need to use https URLs in your repositories. http URLs are now > blocked by default. > That should resolve the issue you are having. He can't. The problem is with a transitive dependency of Solr 4.10.4 and is in Solr's POM. This is a known problem for DSpace: https://stackoverflow.com/q/66962265/2916377 It was activated by a recent Maven upgrade which blocks unencrypted repository accesses by default. > You should take a look at your $HOME/.m2/settings.xml, as well as > potential occurrences of repository tags in your pom.xml files. That won't help in this case, since the problem lies in a necessarily ancient version of a third-party dependency. One could either override the block in .m2/settings.xml or manually acquire a copy of the restlet artifact and install it in one's local repository (perhaps using 'mvn install:install-file'). There are breaking changes in newer releases of Solr which won't be accounted for in DSpace until the next major release (which should come soon). Moving to a newer Solr release is a rather involved process due to those changes, and I don't know of anyone who has done it with a released version of DSpace. -- Mark H. Wood Lead Technology Analyst University Library Indiana University - Purdue University Indianapolis 755 W. Michigan Street Indianapolis, IN 46202 317-274-0749 www.ulib.iupui.edu signature.asc Description: PGP signature
Re: Augment pom dependencies information with custom ones
On Thu, Dec 05, 2019 at 09:04:17PM +0200, Anton Tanasenko wrote: > If you have control over report generation, what you can do is add xml > processing instructions into your pom files that your plugin can later > parse out of the xml without interfering with existing pom model. > M2Eclipse uses that approach to add some metadata to plugin executions. > Here's [1] the code pointer that performs the parsing from maven model. > > [1] > https://github.com/eclipse/m2e-core/blob/master/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/lifecyclemapping/AnnotationMappingMetadataSource.java#L168 It might be even easier than that. Could one not write an XSL transform to combine the POM with a document containing named dependencies and your rationales, to produce such a report? But it would be nicer if the schema and the dependency plugin were extended to permit the documentation that was requested. And it does seem in line with Maven's purpose as a "project...comprehension tool." Another approach, which wouldn't require releasing a new version of the POM schema, would be if Maven had an option to politely ignore elements in other namespaces instead of killing the build with an ERROR. Then a POM document could be augmented for processing by other tools (such as a slightly different XSL transform). -- Mark H. Wood Lead Technology Analyst University Library Indiana University - Purdue University Indianapolis 755 W. Michigan Street Indianapolis, IN 46202 317-274-0749 www.ulib.iupui.edu signature.asc Description: PGP signature
Re: Quicker local maven builds article
On Tue, Oct 22, 2019 at 09:34:46PM +0100, Paul Hammant wrote: > Maven's XML is too element normal for my liking. Attributes where > appropruate would be good. Yes. But changing now would be quite a wrench, even with tools to translate the old dialect to the new. A lot of other code also understands POM documents nowadays. > Also deps and GAVs needs a shakeup, IMO: > > > > com.thoughtworks.xstream:xsteam:1.4.3 > > > org.junit:junit:4.12 > org.seleniumhq.selenium:selenium-java:3.14159 > Please, no. perhaps. > Not being able to grep for specific GAVs is a critical flaw. Wrong tool. grep is for text, not structured documents. Try XQuery. But this is wandering away from "how can we avoid rebuilding unchanged stuff?" -- Mark H. Wood Lead Technology Analyst University Library Indiana University - Purdue University Indianapolis 755 W. Michigan Street Indianapolis, IN 46202 317-274-0749 www.ulib.iupui.edu signature.asc Description: PGP signature
Re: Is specifying direct dependencies a good practice?
On Thu, Jan 10, 2019 at 09:14:45AM -0500, Mark H. Wood wrote: > I try always to declare all direct dependencies, regardless of whether > they are also transitive dependencies (today). > > One reason for this is that it improves the documentation of the > project. Not only does it provide useful information to reporting > tools driven by Maven, but you can learn useful things about a project > by just reading the POM. > > Another reason is that I'm uncomfortable relying on the inclusion of > direct dependencies by happenstance. An upgraded dependency, which > *was* pulling in another direct dependency but does no more, can break > the build in a way that is quite avoidable. A third reason is that it gives you a chance to specify what versions of your dependencies are used, instead of letting other dependencies set (and change!) those versions. Use with caution: there may be strong reasons for those other dependencies to require the versions that they do. If you have an assembly composed from multiple complex projects, you may be able to harmonize versions of shared dependencies instead of ending up with multiple versions of the same artifact and wondering which one is used. -- Mark H. Wood Lead Technology Analyst University Library Indiana University - Purdue University Indianapolis 755 W. Michigan Street Indianapolis, IN 46202 317-274-0749 www.ulib.iupui.edu signature.asc Description: PGP signature
Re: Is specifying direct dependencies a good practice?
On Thu, Jan 10, 2019 at 04:51:17PM +0800, 林自均 wrote: > I feel a bit uncomfortable with using the classes in transitive > dependencies. For example, my project A depends on other project B, and > project B depends on project C. When I directly use the classes of projects > C in my project A, I expected that Maven would throw a warning on it, since > project B may someday remove or update the version of the dependency of > project C. However, it complains nothing. It makes me wonder what's Maven's > recommendation for such scenario. After reading the tutorial on > https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html, > I still couldn't find out what Maven suggests. > > When I use a class in my project, is it a better practice to specify the > project containing the class as a direct dependency, or just let the > transitive dependency do its job? What's the catch? Thanks! I try always to declare all direct dependencies, regardless of whether they are also transitive dependencies (today). One reason for this is that it improves the documentation of the project. Not only does it provide useful information to reporting tools driven by Maven, but you can learn useful things about a project by just reading the POM. Another reason is that I'm uncomfortable relying on the inclusion of direct dependencies by happenstance. An upgraded dependency, which *was* pulling in another direct dependency but does no more, can break the build in a way that is quite avoidable. -- Mark H. Wood Lead Technology Analyst University Library Indiana University - Purdue University Indianapolis 755 W. Michigan Street Indianapolis, IN 46202 317-274-0749 www.ulib.iupui.edu signature.asc Description: PGP signature
Integration testing of command line tools?
When writing integration tests for command-line tools, is there any support in Failsafe, jUnit, or elsewhere to fork a process and manage its standard IO streams? Or am I over-designing? Would one typically write such an integration test rather like a unit test, bypassing the command analyzer and just calling the appropriate method on an instance created by the test suite? Without stubbing or mocking the underlying code, of course, since it's an integration test. Is there a better place to ask? -- Mark H. Wood Lead Technology Analyst University Library Indiana University - Purdue University Indianapolis 755 W. Michigan Street Indianapolis, IN 46202 317-274-0749 www.ulib.iupui.edu signature.asc Description: PGP signature
Questions about
I just got bitten by "activeByDefault doesn't mean what everyone thinks it means." OK, that's the way it is. But I have some questions: o Real-world use case for the current behavior? o Is there some reason why the meaning of !NAME is not documented in the POM reference? o Where *is* it documented? Lots of people seem to know about it. -- Mark H. Wood Lead Technology Analyst University Library Indiana University - Purdue University Indianapolis 755 W. Michigan Street Indianapolis, IN 46202 317-274-0749 www.ulib.iupui.edu signature.asc Description: PGP signature
Re: Gentoo packaging / reproducibility of Maven-based Java projects
On Fri, Mar 17, 2017 at 02:11:20PM -0500, Curtis Rueden wrote: > I am currently discussing on GitHub with one of the Gentoo packagers the > possibility of packaging my group's Maven-based projects for Gentoo. > > The relevant issue is here: > https://github.com/imagej/imagej/issues/162 > > However, the issues are hardly unique to my projects. This has become a > very general discussion of rebuilding and packaging Maven projects. > > My questions are: > * Does anyone here use Gentoo? I do. > * Has anyone packaged their Maven-based stuff for it? No, I haven't contributed any packages to Gentoo yet. > * Does anyone know of a _general_ process for doing so? Typically a Gentoo package specifies all of its dependencies as Gentoo packages, and Portage does the dependency management. This is probably why you have so much trouble: two package managers fighting for control. The "Gentoo Way" would seem to be: first package all of the dependencies individually, get them into Portage, then add the dependent, adjust the POM to assume all dependencies will be supplied at runtime, and let Portage calculate the classpath. Ick. There are some Gentoo packages based on projects which for some reason cannot or will not use stable releases of their dependencies, but instead package all of the source for those dependencies with the dependent code. It's grating, but it works. This is probably the easier route when using Maven in a Portage environment: ship everything as subprojects and build it all together. The middle path might be: package the dependencies individually, work out a way for Maven to see them as being present in the local repository, build the dependent happily using Maven. I don't know the guts of Maven well enough to say how hard it would be to plug in a new local-repository provider that uses the Gentoo /usr/share/*/lib layout. Binary dependencies are going to be a royal pain no matter how you do them. Ugh! One thing this means is that your package can never exist for any architecture that the binary is not built for. That's sadly not without precedent. -- Mark H. Wood Lead Technology Analyst University Library Indiana University - Purdue University Indianapolis 755 W. Michigan Street Indianapolis, IN 46202 317-274-0749 www.ulib.iupui.edu signature.asc Description: PGP signature
Re: Comparing specifying repositories in pom vs. settings.xml?
OK, I'm going to learn a lot from this thread. On Tue, Oct 18, 2016 at 06:57:42AM -0700, Robert Patrick wrote: > But in a large corporate environment, the centralized repository manager can > house hundreds/thousands of repositories so unless you want to virtualize the > entire set of repositories (which tends to make the repository manager > slower), you still need to specify the repositories to search, right? We have a local Nexus instance, and besides a mirror of Central and a couple of others, there are just two non-mirror repositories: local-snapshots and local-releases. Why would you have more than these? -- Mark H. Wood Lead Technology Analyst University Library Indiana University - Purdue University Indianapolis 755 W. Michigan Street Indianapolis, IN 46202 317-274-0749 www.ulib.iupui.edu signature.asc Description: PGP signature
Re: Comparing specifying repositories in pom vs. settings.xml?
On Mon, Oct 17, 2016 at 08:03:03PM +, KARR, DAVID wrote: > One thing I run into when jumping between different projects is different > expectations for what maven repos I need to be using. In the past, I had to > have multiple copies of "~/.m2/settings.xml" lying around, and I would hack > the specified repos when I needed to. I'm trying, without success, to imagine why you do not simply accumulate elements as required. Before long you should reach a state in which new additions are extremely rare. -- Mark H. Wood Lead Technology Analyst University Library Indiana University - Purdue University Indianapolis 755 W. Michigan Street Indianapolis, IN 46202 317-274-0749 www.ulib.iupui.edu signature.asc Description: PGP signature
Is there any way to have archetype:generate fill in "boilerplate" fields?
It's a small thing, but it would be handy if I could stash some settings somewhere that would cause the archetype generator to fill in my and and the like. -- Mark H. Wood Lead Technology Analyst University Library Indiana University - Purdue University Indianapolis 755 W. Michigan Street Indianapolis, IN 46202 317-274-0749 www.ulib.iupui.edu signature.asc Description: PGP signature
Re: Questions regarding License Maven Plugin
On Thu, May 26, 2016 at 10:34:28AM +0100, Stian Soiland-Reyes wrote: > license-maven-plugin is not maintained by Apache, and have its own mailing > list which should be able to help you further: More generally: a plugin with a name like FOO-maven-plugin is not maintained by the Maven project, and it would be good to see if it has its own mailing list. A plugin with a name like maven-FOO-plugin probably *is* maintained by the Maven project. -- Mark H. Wood Lead Technology Analyst University Library Indiana University - Purdue University Indianapolis 755 W. Michigan Street Indianapolis, IN 46202 317-274-0749 www.ulib.iupui.edu signature.asc Description: PGP signature
How to get m-assembly-p to copy from an existing symlink?
A project has an assembly with an explicit of a specific file. .. config local.cfg I have many versions of this file and would like to select one by symlinking one of them to the expected name. m-a-p 2.6 responds: [ERROR] Failed to execute goal org.apache.maven.plugins:maven-assembly-plugin:2.6:single (default) on project dspace: Failed to create assembly: Error creating assembly archive installer: Problem copying files : /home/mwood/build/dspace/DS-2654/dspace/target/dspace-installer/config/local.cfg -> [Help 1] Enabling debugging (-X) shows that the cause is a Plexus ArchiverException caused by a NoSuchFileException fingering the place that m-a-p was supposed to copy the file *to*. And indeed the 'config' directory has not been created. (The dspace-installer directory *is* created.) Is this expected behavior? Is there a way to make this work? (I want the link followed and the content of its target copied to the assembly.) Should I file an issue? -- Mark H. Wood Lead Technology Analyst University Library Indiana University - Purdue University Indianapolis 755 W. Michigan Street Indianapolis, IN 46202 317-274-0749 www.ulib.iupui.edu signature.asc Description: Digital signature
Re: License Auditing
Doesn't the pro version of Nexus do license auditing and analysis? -- Mark H. Wood Lead Technology Analyst University Library Indiana University - Purdue University Indianapolis 755 W. Michigan Street Indianapolis, IN 46202 317-274-0749 www.ulib.iupui.edu smime.p7s Description: S/MIME cryptographic signature
Best practice for optional dependencies?
I'm working on a project which has an optional transitive dependency. That is: we depend on someone else's artifact (let's call it A), which itself depends *in some circumstances* on a third artifact (from a third source) which I'll call B. That is: if you never trigger a certain feature of A then it doesn't really need B. A expresses this by making B a dependency with scopeprovided/scope. I feel that this is an abuse of the dependency mechanism, and that optional dependencies should not be declared to Maven as dependencies at all. I think that A should use Class.forName to probe for B and (if not found) gracefully explain why it cannot perform the requested function. What do you think? The feature in question is decryption of a file, which is triggered when A recognizes an encrypted file, and that is out of our control. Decryption requires key material, and in our application there is no reasonable opportunity to provide it, so we can't actually make use of the decryption function. We are thus faced with a choice: declare a transitive dependency as if it were a direct dependency, to support an unusable feature, and leave notes all over our POMs to explain why dependency:analyze is wrong and you should not remove this dependency; or keep explaining to people why they get NoClassDefFoundError when processing some of their files. -- Mark H. Wood Lead Technology Analyst University Library Indiana University - Purdue University Indianapolis 755 W. Michigan Street Indianapolis, IN 46202 317-274-0749 www.ulib.iupui.edu signature.asc Description: Digital signature
Re: Little documentation issues
Thinking about the developer's perspective a bit, I came up with some suggestions but no actual language. The developer is a person who wants to build units of software into distributable products, so it's useful to talk briefly about lifecycle, phase, goal, execution, and artifact in terms familiar to such a person. *Briefly* -- full details should be linked. This is simply to define terms which will then be used to map the nature of Maven plugin to his experience. A developer probably has a general notion of what a plugin is, so what he needs is to know what a *Maven* plugin is: an assembly of Java classes which provides additional concepts and behaviors that the Maven framework can use in building your projects. It can define additional lifecycles and phases, and it provides goals that you may bind to phases in order to perform additional work during the build. There should be a link to how one creates a Maven plugin, elsewhere. It may be well to mention at *this* point that much of Maven's built-in behavior is actually provided by included plugins. In this way, one first learns what a Maven plugin is and then immediately sees application of the concept through the lens of the knowledge one has just gained. Perhaps pick one common plugin as an example. Someone noted that goal and Mojo are often used interchangeably, but it may be good to mention here that goal is a named behavior and Mojo is its implementation. (If I have that right.) -- Mark H. Wood Lead Technology Analyst University Library Indiana University - Purdue University Indianapolis 755 W. Michigan Street Indianapolis, IN 46202 317-274-0749 www.ulib.iupui.edu signature.asc Description: Digital signature
Re: [LOGO] site with Fluido skin and owl logo
On Wed, Nov 26, 2014 at 08:25:56AM +, Stephen Connolly wrote: [snip] I also think we should remove the side-bars (and perhaps switch to a top bar menu) as they hinder mobile accessibility. Aha! This may explain why, at the very moment that 16:9 monitors are becoming ubiquitous, websites are all being redesigned as a skinny rivulet of text down the center of a broad snowfield. -- Mark H. Wood Lead Technology Analyst University Library Indiana University - Purdue University Indianapolis 755 W. Michigan Street Indianapolis, IN 46202 317-274-0749 www.ulib.iupui.edu signature.asc Description: Digital signature
Re: Why not a forum
On Tue, Jul 22, 2014 at 03:51:54PM +, Preston, Dale wrote: I was just wondering why this group uses an email list rather than a forum. It seems forum software is more searchable and filterable than email lists. If it had been my choice: because I'd have to go to a forum every day (and a hundred others!) while email comes to me. I have plenty of powerful email search and filter tools right here on my workstation. Every time someone proposes some other medium for this sort of communication (forum, Twitter, etc.) my first question is how can I get that in email? I can't think offhand of any forum software I've used that isn't uncomfortable, inconvenient and hard to search. -- Mark H. Wood, Lead System Programmer mw...@iupui.edu Machines should not be friendly. Machines should be obedient. signature.asc Description: Digital signature
Re: Complex Maven projects - Tutorials? Books?
On Fri, Jun 13, 2014 at 09:23:31AM +0930, Barrie Treloar wrote: On 13 June 2014 09:07, mike digioia mpd...@gmail.com wrote: So how does this book help you any more than all the detailed online Maven docs that exists and are updated? It's just another source of information. The docs don't really walk you through everything, they are mostly focused on a particular plugin and not on how to pull all this together. Indeed. One thing I really miss from the evil old mainframe days is the manuals that gave you the big picture and the developers' view of how they expected the tools to be used. There were usually two books for any product: o Reference Manual -- *complete* individual descriptions of each feature, command, and qualifier. o Programmer's (or User's) Guide -- fits all the pieces together and suggests good ways to think about the facility under discussion. I typically had both open when working on anything nontrivial. It's essential to have both the macro and the micro view of a tool, to use it well. -- Mark H. Wood, Lead System Programmer mw...@iupui.edu Machines should not be friendly. Machines should be obedient. signature.asc Description: Digital signature
Re: Use native tar to unpack? good/bad idea?
On Mon, Jun 02, 2014 at 04:15:15PM -0700, Dan Tran wrote: BTW, I never have good luck with plexus-archiver, and always ended up to implement my own 'unpack' using native tar to speed up the build and also reserve the softlinks in the archive. If plexus-archiver needs work, maybe they would accept a patch. Then everybody wins. -- Mark H. Wood, Lead System Programmer mw...@iupui.edu Machines should not be friendly. Machines should be obedient. signature.asc Description: Digital signature
Re: Hot deployment using jetty 8 and maven
On Thu, Apr 10, 2014 at 09:24:31AM -0500, Wayne Fay wrote: However, it would be great to execute mvn process-classes automatically anytime maven sees there have been source files changed. This is just not a feature that Maven natively supports. You can get similar functionality out of your IDE. Or maybe your IDE can use an on save trigger to kick Maven to run process-classes? If it was mine, I'd check the changes into an SCM, which I'd have monitored by something like Jenkins. I'd want all those bits anyway. -- Mark H. Wood, Lead System Programmer mw...@iupui.edu Machines should not be friendly. Machines should be obedient. signature.asc Description: Digital signature
Re: Why is dependency:analyze lying to me?
On Wed, Feb 12, 2014 at 08:11:29AM +1030, Barrie Treloar wrote: [snip] I think Maven is missing a scope, it needs to break up test into two phases; testCompile and testRuntime instead of having one scope which means both. This means that the analyze code can't tell what stuff is needed for tests at compile time and what is needed at runtime. Picky terminology tweak: I went off to check my memory because I was *sure* that Maven has a full set of test-* phases parallel to what we might call the main phases. It has. Then I came back here and saw that what you want is parallel *scopes* [test]Compile, [test]Runtime. Having sorted that (I hope), I think I agree with you. -- Mark H. Wood, Lead System Programmer mw...@iupui.edu Machines should not be friendly. Machines should be obedient. signature.asc Description: Digital signature
Re: New logo?
On Tue, Jan 14, 2014 at 12:08:09PM +, Stephen Connolly wrote: Putting maven-20 in context, you get: http://people.apache.org/~stephenc/maven-logo-contest/maven-20-in-context.png *Very* nice work, but...what does this Native Americans theme have to do with maven? Yes, I know, but people *will* ask. Especially since the answer has no connection with what Maven would do for them. Unless I'm mistaken, the Maven landing page exists to sell Maven, not the Apache Software Foundation. A link to the Foundation's landing page is quite appropriate and should be easy to find, but that's not why people come to this page. They come because they've heard something about Maven and want to know more, or Google gave them a link when they asked something about software project management or build tools, or because some other project had a built with Maven link on its page and they're curious. They'll probably be best pleased if, at a glance, they can get some notion of what Maven does. Possibly that message simply isn't very visual, and the best one can do is to select a (formerly) meaningless but unique mascot or abstract symbol. Possibly there is an image that will make people think, yes! that is Maven in action. I'm really not that sort of visual thinker, but images of structure, assembly, or gathering seem appropriate. The best(?) I've been able to imagine is a funnel with classes falling in and a package falling out. Or perhaps an assembly line. (What do classes look like? beats me.) Maybe you can do something with the Reactor: skinny pipes bring things in, one big pipe lets the product out. -- Mark H. Wood, Lead System Programmer mw...@iupui.edu Machines should not be friendly. Machines should be obedient. signature.asc Description: Digital signature
Re: New logo?
On Tue, Jan 14, 2014 at 12:45:18PM +, Adam Retter wrote: Does the Apache Foundation of any of its members have any money to engage a graphical designer? I was just thinking that after the voting, you could get a designer to do a proper job on the logo (perhaps producing some variations of the voted on design which could again be voted on further?). I do not mean any offence to everyone that submitted designs, but clearly we are not professional artists ;-) Actually I think the artwork is quite good. It's the visual language itself that seems uncertain. Which points even more strongly to the need for a graphic designer. -- Mark H. Wood, Lead System Programmer mw...@iupui.edu Machines should not be friendly. Machines should be obedient. signature.asc Description: Digital signature
Re: New logo?
All rather nicely done. FWIW I'm partial to #5. http://people.apache.org/~stephenc/maven-logo-contest/maven-5.png -- Mark H. Wood, Lead System Programmer mw...@iupui.edu Machines should not be friendly. Machines should be obedient. signature.asc Description: Digital signature
Re: New logo?
On Thu, Jan 02, 2014 at 03:53:46PM -0500, Jeffrey E Care wrote: Stephen Connolly stephen.alan.conno...@gmail.com wrote on 01/02/2014 02:06:55 PM: I personally liked the anteater idea... We can ask the Ant PMC if we have a winning logo that we are worried about While some Ant folks might appreciate the tongue-in-cheek nature of an anteater logo, I think it be seen by many more folks as unnecessarily antagonistic. Perhaps. I think it's a cute idea, but I feel that Maven and Ant have different jobs, so for many it might be puzzling instead. I think there'd be quite a number of questions why's your mascot an anteater, of all things? -- Mark H. Wood, Lead System Programmer mw...@iupui.edu Machines should not be friendly. Machines should be obedient. signature.asc Description: Digital signature
Re: New logo?
On Thu, Jan 09, 2014 at 09:32:54AM -0600, Curtis Rueden wrote: All of the logos are OK, but none of them really symbolize anything in particular about Maven. IMO the best logos encapsulate the purpose of the project somehow, either overtly, covertly or both. Good point. I was associating with the name Maven, looking for a symbol of in-depth understanding of a specialized field. http://en.wiktionary.org/wiki/maven So, what does Maven do? It passes unique source and object code inputs through a standardized process, guided by an expression of the relationships among those inputs, to assemble a well-specified configuration of runnable code. What does that look like? -- Mark H. Wood, Lead System Programmer mw...@iupui.edu Machines should not be friendly. Machines should be obedient. signature.asc Description: Digital signature
Re: Changing JDK version without specifying maven-compiler-plugin version
On Tue, Nov 26, 2013 at 05:05:40PM +0100, Malte Skoruppa wrote: [snip] I am not so intent on having the 'latest-and-greatest' plugin as you might think. It's more that I would like to stick to the default configuration unless I have good reason not to do so. It's really just that I find it kind of weird that if I want to deviate from one default (the Java version), I also *have* to deviate from another (the plugin version). Think of it this way: org.apache.maven.plugins:maven-compiler-plugin does not refer to a single plugin, but to the whole family of versions of that plugin. It's an incomplete set of coordinates, specifying a line rather than a point. The weirdness is inevitable, because in order to configure the plugin you have to specify which plugin you are configuring. It's a minor pain in the neck, flowing from the way Maven needs to work. I dislike it too, but one gets used to it. Maven deals in artifacts, not lines of development. I'm coming around to the position that grooming POMs to update the versions of all specified dependencies (packages *and* plugins) is just one of the things one does right after release, when beginning the next development cycle. dependency:analyze is a good source of suggestions. That way you regularly catch up with recent developments elsewhere, and can still pin down versions within a development cycle. Within each cycle I'd tend to hold versions stable unless someone releases an update that I really need. BTW, speaking of weirdness: generated POMs *do* specify the version of m-compiler-p, by *not* specifying it. There's a built-in set of defaults(1) buried inside Maven, which specify much of the not-otherwise-specified. Someone already mentioned this, but it may have sped by unnoticed. --- 1. All together, now: convention over configuration! -- Mark H. Wood, Lead System Programmer mw...@iupui.edu Machines should not be friendly. Machines should be obedient. signature.asc Description: Digital signature
Re: System-wide, read-only repository
On Wed, Oct 30, 2013 at 10:18:49AM +0100, Matthieu Moy wrote: Barrie Treloar baerr...@gmail.com writes: On 29 October 2013 23:56, Lyons, Roy roy.ly...@cmegroup.com wrote: Unfortunately, you will always have something in $HOME/.m2/repository because that's how maven works. Can I suggest perhaps that you use zfs for deduplication in /home? Otherwise, you can add something like Or give them more disk space - isn't this stuff meant to be cheap now-a-days? Local disk space is cheap. NFS-shared, RAID backed-up disk space, less so. I can live with a few Gb of waste, but I was just wondering whether we could do any better. Disks are cheap. But not free. Running the procurement gantlet is not free. Downtime to install new storage is not free. Lord knows that additional backup tapes are not free, not even cheap. Longer backup windows are not free. Throwing storage at the problem is often a reasonable choice, but it's also reasonable to always ask if there isn't a better way. Sorry, I've been aching to write that for a long time -- Mark H. Wood, Lead System Programmer mw...@iupui.edu Machines should not be friendly. Machines should be obedient. signature.asc Description: Digital signature
Re: Trying to understand how maven finds source
On Thu, Oct 24, 2013 at 10:34:39PM -0400, Ron Wheeler wrote: Eclipse/STS from the Spring guys (VMWare now) is an Eclipse IDE with all of the plug-ins that you need to develop Java (and more). We started with pure Eclipse but spent so much time fixing up the plug-ins with each new version that it affected our productivity. Once we found the Spring Tool Suite (Eclipse with all the right plug-ins) we were in good shape - 1 download and we were back up and coding in a few minutes. I have never used NetBeans so I have no comment about how it helps with the original problem(source code location). NetBeans helps quite a lot. I've been shamefully spoiled by it and tend to use it even just to browse code when I have no intent to develop it. I've used Eclipse (not STS though) and was happy to see the back of it after losing too much time to plugins-disease. I hear that IntelliJ is good with Maven projects too. -- Mark H. Wood, Lead System Programmer mw...@iupui.edu Machines should not be friendly. Machines should be obedient. signature.asc Description: Digital signature
Re: Plugin name is idfc-maven-proguard-plugin (was re: introducing maven-proguard-plugin)
On Mon, Jul 15, 2013 at 11:36:19PM -0400, Richard Sand wrote: [snip] The plugin API seems pretty straightforward to use. I think the #1 priority should be filling in all of the javadocs so that developers can understand the API. Most of the javadocs had no comments so it was problematic to figure out the right techniques to do things in the proper maven way. I think with this API its easy for plugin developers to go astray and perform activities that have negative downstream consequences to other plugins. I'm sure that patches would be welcome, if you care to jot down what you have learned as a start on improving the javadocs. -- Mark H. Wood, Lead System Programmer mw...@iupui.edu Machines should not be friendly. Machines should be obedient. signature.asc Description: Digital signature
Re: Is it necessary to learn XML in order to lear Maven?
On Thu, Jun 27, 2013 at 03:35:26PM +, cody.a.fy...@wellsfargo.com wrote: I would argue that to be a competent, modern computer programmer, you DO need to learn XML. There are many powerful things that can be accomplished once you have that knowledge. I tend to agree, but I think that learn XML is rather imprecise. You can learn to read XML in about five minutes, and to write it in ten. It's really, really simple. It also doesn't get you far at all. What people *do with XML* is often highly complex, abstruse, and intellectually challenging. A Maven POM, expressed in XML (which it always is, externally) can be daunting. XSD, XSL-T, and a thousand and one other *applications of* XML each have their own learning curves, some rather steep and bumpy. So I'd say, yes, you should learn XML if you want to use Maven, but that's easy. Learning Maven will require much more effort, but that effort will be amply rewarded. -- Mark H. Wood, Lead System Programmer mw...@iupui.edu Machines should not be friendly. Machines should be obedient. signature.asc Description: Digital signature
Re: Maven Profile for distincts web.xml
On Mon, May 27, 2013 at 02:20:15PM -0300, Alberto Ivo wrote: The differences between the web.xml is context-param param-namejavax.faces.PROJECT_STAGE/param-name param-value*Development | Production*/param-value /context-param Shouldn't that sort of information be supplied by the container rather than baked into the app? -- Mark H. Wood, Lead System Programmer mw...@iupui.edu Machines should not be friendly. Machines should be obedient. signature.asc Description: Digital signature
Re: Maven Profile for distincts web.xml
On Tue, May 28, 2013 at 02:49:26PM +0100, Stephen Connolly wrote: On 28 May 2013 14:37, Mark H. Wood mw...@iupui.edu wrote: On Mon, May 27, 2013 at 02:20:15PM -0300, Alberto Ivo wrote: The differences between the web.xml is context-param param-namejavax.faces.PROJECT_STAGE/param-name param-value*Development | Production*/param-value /context-param Shouldn't that sort of information be supplied by the container rather than baked into the app? One would think so, but sadly that is not the way the spec was written. According to http://css.dzone.com/news/jsf-20-new-feature-preview-ser You can use a JNDI variable to override: java:comp/env/jsf/ProjectStage So if that works for the JSF impl you are using you should be able to configure the container so that all deployed apps see the java:comp/env/jsf/ProjectStage value you want them to see... thereby removing the problem entirely. Older JSF 2 implementations may have issues though... but should be fine on all JSF 2.1+ etc I suppose it depends on your container. In Tomcat I'd write an external context descriptor something like: Context ... Parameter name='javax.faces.PROJECT_STAGE' value='Development' override='false'/ /Context and omit the context-param from web.xml, letting the value default to Production. I think I recall being able to do something similar in Jetty. -- Mark H. Wood, Lead System Programmer mw...@iupui.edu Machines should not be friendly. Machines should be obedient. signature.asc Description: Digital signature
Is there a way to specify encoding of files configured in filters?
We have sites in countries where the local language uses non-8859-1 characters, and the local people would like to write interpolated externalized property values in UTF-8. Understandably, they would rather not resort to nearly-unintelligible escape sequences. Is there some way to get buildfilters or a buildfiltersfilter to use UTF-8 encoding when reading a serialized Properties? Our projects have long used project.build.sourceEncodingUTF-8/project.build.sourceEncoding but it has no effect on this. It appears that this only applies to files *read by Maven*, and that Maven understandably uses java.util.Properties.load(), which takes no notice of POM values, to read .properties files. -- Mark H. Wood, Lead System Programmer mw...@iupui.edu Machines should not be friendly. Machines should be obedient. signature.asc Description: Digital signature
Re: [mojo-dev] Re: Build-Helper-Maven-Plugin / Build-MetaData-Maven-Plugin
On Mon, Apr 15, 2013 at 09:48:35PM +0100, Stephen Connolly wrote: [snip] The reality is that the true goal of the Maven Way™ is that your pom should be as close as possible to the following project groupId.../groupId artifactId.../artifactId version.../version packaging.../packaging dependencies ... /dependencies /project Every line you add to the above is moving further from the Maven Way™ Brilliant. The above describes what the project *is*. The more you have to tinker with plugins and the like, the more likely you are describing *how the project should be built*. But if I have understood the situation, Maven exists to figure out *how* after you have told it *what*. -- Mark H. Wood, Lead System Programmer mw...@iupui.edu Machines should not be friendly. Machines should be obedient. signature.asc Description: Digital signature
Re: Unpacking jars into target/classes
On Thu, Mar 14, 2013 at 09:44:14PM -0400, Ron Wheeler wrote: How do you write documentation for something that you have never used and have no idea what the options are? Exactly! You grumble a bit, pull down the source, and start reading. This is horrible and exhausting and often underappreciated, but it's the only thing that works, it the author won't share his thoughts. I have worked on documentation for some projects but I can only go so far without the active involvement of the author. The biggest thing that I can bring is my ignorance which makes me read what is there and ask good questions about WTF does it mean and what needs to be said so that someone who did not write it can use it. It does require access to someone who can answer those questions. Hear, hear. I'm sure that a large part of technical writing is spent interviewing (not to mention identifying, finding, chasing and hounding) the people who know that which must be written down. -- Mark H. Wood, Lead System Programmer mw...@iupui.edu There's an app for that: your browser pgpxZVJ735H1I.pgp Description: PGP signature
Re: Deployment
On Fri, Mar 01, 2013 at 07:40:30PM -0800, Eric Kolotyluk wrote: The part I was not too happy with was my service.jar was this ginormous uber-jar created with the Assembly plug-in. Sure, everything worked perfectly well, and was simple, but when I say ginormous I am very serious. If I had had the time, the next thing I was going to do was have my installer install Maven, and then bootstrap the rest of the pieces by just choosing the right artifact names and versions given the system environment I found. Basically, replace the uber-jar with a common system-wide repository of jars, and configure the classpath appropriately. I am just thinking out loud and trying to get ideas from people. If the main thing you want from Maven in this case is dependency resolution, consider something like Ivy, which specializes in such. -- Mark H. Wood, Lead System Programmer mw...@iupui.edu There's an app for that: your browser pgpQk5X2K5tNR.pgp Description: PGP signature
How to get Maven's own version into an artifact?
There's a desire for our product to be able to say, at runtime, what version of Maven was used to build it. Somewhat surprisingly I wasn't able to find a predefined property holding this information. There *is* a class one can instantiate which offers a method to return that information, but before I go writing up a whole plugin just for this little thing, I thought I should ask if there's an easier way that I missed. Ultimately I will likely filter the value into a Properties-formatted file to be loaded at need. -- Mark H. Wood, Lead System Programmer mw...@iupui.edu There's an app for that: your browser pgpKqN7rEoTtB.pgp Description: PGP signature
Re: maven-nar-plugin (version?)
On Tue, Jan 15, 2013 at 09:22:33PM -0500, Benson Margulies wrote: Nar is not a product of the Maven PMC, and so will never be an official org.apache.maven.plugin anything. Right, but whose product is it today and how do we find the latest official release? -- Mark H. Wood, Lead System Programmer mw...@iupui.edu There's an app for that: your browser pgptT8ujHnAFV.pgp Description: PGP signature
Re: Site plugin to document properties in the pom?
On Mon, Jan 14, 2013 at 10:26:56PM +0200, Graham Leggett wrote: On 14 Jan 2013, at 10:02 PM, Mirko Friedenhagen mfriedenha...@gmail.com wrote: I once was successful with referencing injected properties in velocity by using the get method. Maybe something like: ${project.properties.get(tomcat.port.http.confluence43.live)} will work? Alas, no. The idea is that the properties in the pom and the properties published to the site are always in sync, even after the current crop of architects have moved on from the project. If you have to add a property in two steps, there is no way the project will stay in sync. Yeah, he's asking for a way to get the site plugin to ask the POM for a list of all defined properties, whatever they may be today, so that the plugin can enumerate them (with their values I suppose) in its report *without knowing their names in advance*. The value of project.properties seems to be a java.util.Properties, so there may be some way to get at its propertyNames() method, or the keys() keySet() etc. methods it inherits from Hashtable, but you will probably have to write your own report plugin to make use of any of them. org.codehaus.mojo:properties-maven-plugin seems to know how to enumerate properties, but it doesn't do reporting. It could perhaps be studied as a model. -- Mark H. Wood, Lead System Programmer mw...@iupui.edu There's an app for that: your browser smime.p7s Description: S/MIME cryptographic signature
Re: Match syntax?
On Thu, Nov 29, 2012 at 07:12:37PM +0100, Robert Scholte wrote: These patterns were introduced with Ant. Well, glob matching goes back at least as far as Unix v1 http://en.wikipedia.org/wiki/Glob_%28programming%29 Ant improved on this by adding the double-asterisk that matches any depth of hierarchy levels (treating a level as an atom, not a string). They're clearly not REs: *.something viewed as an RE begins with a quantifier which has nothing to quantify. -- Mark H. Wood, Lead System Programmer mw...@iupui.edu I don't do doorbusters. pgpVhzB81DDVS.pgp Description: PGP signature
Re: Create text file in maven?
On Wed, Nov 28, 2012 at 10:13:47AM -0600, Steve Cohen wrote: Is there a way in maven to echo some text provided via a property in pom.xml into a text file at a given location? Perhaps [modest cough] http://mypage.iu.edu/~mwood/FileWeaver/ -- Mark H. Wood, Lead System Programmer mw...@iupui.edu I don't do doorbusters. pgp2P2G4XAmxW.pgp Description: PGP signature
Re: Request For Enhancements
May I suggest that the issue tracking system: http://jira.codehaus.org/browse/MNG would be the best place to submit each individual issue. -- Mark H. Wood, Lead System Programmer mw...@iupui.edu Asking whether markets are efficient is like asking whether people are smart. pgp7FmpNxTK9W.pgp Description: PGP signature
[ANN] FileWeaver Maven Plugin 1.0 Released
I'd like to announce the release of FileWeaver 1.0. FileWeaver is a Maven plugin for assembling files from snippets. Multiple external files and literal segments can be combined, with token substitution. Why? I needed to append chunks of settings to a lengthy configuration file for testing, so that I didn't have to carry around two slightly different versions and keep them in sync. Homepage: http://mypage.iu.edu/~mwood/FileWeaver/index.html Coordinates: plugin groupIdedu.iu.ul.maven.plugins/groupId artifactIdfileweaver/artifactId version1.0/version /plugin -- Mark H. Wood, Lead System Programmer mw...@iupui.edu Asking whether markets are efficient is like asking whether people are smart. pgpacFSWVveLo.pgp Description: PGP signature
Re: The Maven Way
different directories. (There are good reasons for that.) I'm being silly to make a point: 'zero configuration' isn't possible. You need to configure your project even to start, and you need to know some rather nontrivial and non-obvious stuff about Maven to do that properly. A complete deployable can't be done without more configuration, some of it a bit abstruse. This is not something lacking in Maven; it must be that way to do its job: modelling and orchestrating complex processes with many necessary parameters whose values vary unpredictably with each application. Some of this configuration can't be done until you know your local policies, which means someone has to *create* local policies. Maven strives heroically to simplify all this for us but, as Einstein observed, there are limits to how much you can usefully simplify a model. Maven does very well, but it can't do everything for us. It's not possible to have concrete conventions for some aspects of a project, since there is more than one possible project. As long as I'm ranting: the Project Object Model is quite complex, of necessity. The Conventions represent a view over that model which obscures many aspects of its complexity. You often don't have to write anything to control those aspects, but you do always have to think about them. Convention is simply built-in configuration which was agreed on by some people who (we hope and believe) knew what they were doing and which is generally accepted in the community. Choosing not to configure something is choosing to configure it the way Maven comes out of the box. Which means one needs to understand how Maven is configured out of the box in order to make good choices. Maven's conventional configuration is pretty good and fairly general, but discovering all of the bits you have to know can be challenging and, until you know what bits to look for, Maven's behavior can be puzzling. -- Mark H. Wood, Lead System Programmer mw...@iupui.edu Asking whether markets are efficient is like asking whether people are smart. pgprH73SeCX1a.pgp Description: PGP signature
Re: The Maven Way
On Thu, Apr 19, 2012 at 05:49:32PM +0200, martin.eisengardt wrote: [snip] Please do think of the target audience before planning this type of documentation section. And do think of the way they are usually learning things. The maven way won't be a site full of plain explanations and documentations. It is focused on newbies and focused on teach them the right way. Some things are not mentioned and some things are not explained but linked to more detailed documents. [good advice snipped] Yes. I would suggest that the Maven Way won't actually say much about doing any specific thing with Maven, but will focus more on good ways to think about and organize what you want to achieve, which map well into Maven's capabilities and assumptions oops I mean conventions. -- Mark H. Wood, Lead System Programmer mw...@iupui.edu Asking whether markets are efficient is like asking whether people are smart. pgpQk07W7D28n.pgp Description: PGP signature
Re: The Maven Way
On Tue, Apr 17, 2012 at 02:40:53PM -0400, Thiessen, Todd (Todd) wrote: Good read. Documentation can be much better, but I suppose it is up to us as community members to make that happen. Maven isn't owned by anyone. The guys at Sonatype have done a good job of posting various blogs. If anyone has the time and desire I am sure she/he could pull many of these various tid bits of good practices into one coherent doc. I think it says something that it has not been done yet. While everyone says it would be great to have, clearly no one has felt strongly enough about it (yet) to make it happen. It is more of a very nice to have than a hard and fast requirement. Or, perhaps no one who feels strongly about it also feels he understands it well enough to write something worth reading. I could write reams of misleading rubbish but what purpose would that serve? I've written documentation for other people's code. It's exhausting, incredibly time-consuming, and often unsatisfactory. The whole reason I wanted documentation was because I didn't understand the product -- if I were in a position to document it well, I wouldn't need the documentation so badly! -- Mark H. Wood, Lead System Programmer mw...@iupui.edu Asking whether markets are efficient is like asking whether people are smart. pgpvIm8dwK3Dy.pgp Description: PGP signature
Re: The Maven Way
On Tue, Apr 17, 2012 at 07:12:26AM -0700, Eric Kolotyluk wrote: I also recommend taking the Sonatype training courses - especially if you are a software architect. There is a lot to be said when you can ask question as the instructor is going over the material. However, you are right, if someone were to write a book called the The Maven Way in the style you suggest, I would certainly be interested in buying a copy. You are not alone in that. Especially since the most valuable single bit of advice one can give a new Maven user is: if you don't do things Maven's way, Maven will fight you and Maven will win. People extol the virtues of convention over configuration, but where is the compact definitive specification of The Conventions? -- Mark H. Wood, Lead System Programmer mw...@iupui.edu What is obvious to A may be not so obvious to B and downright ridiculous to C. -- Asimov pgpJVZfMzjjAu.pgp Description: PGP signature
Re: Uploading external libraries to the central repository without being the owner
https://docs.sonatype.org/display/Repository/Uploading+3rd-party+Artifacts+to+The+Central+Repository But I agree that the best outcome would be to convince the owners of the code to publish it to Central themselves and maintain it there. -- Mark H. Wood, Lead System Programmer mw...@iupui.edu Asking whether markets are efficient is like asking whether people are smart. pgpFs75lLHzC1.pgp Description: PGP signature
Re: using build profiles for WAR plugin
On Thu, Mar 01, 2012 at 11:16:34AM -0800, offbyone wrote: Ok, I hear you, profiles are evil. BUT I still don't understand the alternative so let me give a specific and tangible example and maybe you can explain a specific alternative. I am currently deploying my product in a tomcat/linux environment as a war file. My webapp is driven by a set of spring configuration files using the Spring context loader. For example, one of those spring configuration files is called LookAndFeel.xml. It sets attributes like colors of the user interface. I love using this type of configuration driven design because it lets me swap out the entire look and feel just by changing a config file. There are many deployments of my application on different systems and each one has a different look and feel configuration file. So, I was planning to have a different maven profile for each deployment and have the profile automatically push the correct LookAndFeel.xml into the war archive. So specifically how do I accomplish this this in maven without using profiles? Better you don't. Should I assume that LookAndFeel.xml is something that you design for the customer, rather than (as I first thought) something the customer is supposed to customize on-site? Then the problem is that you are using Maven as a packaging tool. That's not what it is; it's a build tool. Packaging is a different stage. You could keep a copy of deployment X's LookAndFeel with your other records for deployment X, or keep them all in one directory. Yank the custom values out of a database, or write a wizard to step someone through the customization process, and create a LookAndFeel on the fly with e.g. XSL-T when you are packaging your generic Maven-built artifacts for deployment X. The point is that customization is not part of the product; it's part of the deployment. Maven builds your product. You need something else for deployment. -- Mark H. Wood, Lead System Programmer mw...@iupui.edu When the only tool you have is a hammer, every problem looks like a nail. -- Maslow pgpVz4vqPnc8W.pgp Description: PGP signature
Re: maven-plugin-tools-ant custom parameter
On Tue, Jan 17, 2012 at 10:43:10PM +0100, Robert Scholte wrote: Hi Max, Don't confuse a mojo with a pojo. The Mojo reflects the actual goal, supports injection, etc, etc. A pojo is just that plain old java object: private fields with their getters and setters Only for mojo's the @parameters can be used. Such field can be of a lot of types: String, primitive, pojo, array or List of one of these types (as long as Plexus can transform it) The @parameter on the name of the person won't work. It would be nice if the rules were documented somewhere. I strongly advice you to first read the 5 minutes[1] and 30 minutes[2] tutorials. I wish him luck. They leave a lot out. At least, I *think* they do, because I had a lot of questions that don't seem to be answered anywhere. I went digging in the code, wound up deep inside Plexus, submitted a documentation patch for the bits I managed to understand, but still felt no certainty. So what *are* we supposed to do if we want structured parameters? And where should I have read that? -- Mark H. Wood, Lead System Programmer mw...@iupui.edu Asking whether markets are efficient is like asking whether people are smart. pgpPbc6RUrz87.pgp Description: PGP signature
Re: Howto access project version programmatically within application
On Wed, Jan 11, 2012 at 09:07:29AM -0600, Steve Cohen wrote: It appears that this entire class and the interface it is based on are deprecated, in favor of org.apache.maven.rtinfo.RuntimeInformation and org.apache.maven.rtinfo.internal.DefaultRuntimeInformation. But this non-deprecated version of the interface/impl REMOVE the getApplicationVersion() method. What's going on here and what is the approved method for getting the application version now? What he said. Dunno about *approved*, but in a JAR (or WAR?) in META-INF/maven/${groupId}/${artifactId} you'll find pom.properties which contains a 'version' property: $ cat pom.properties #Generated by Maven #Mon Aug 29 13:19:24 EDT 2011 version=1.0-SNAPSHOT groupId=edu.iupui.ulib.dspace artifactId=casAuthn I know that at least one product deserializes this file to discover its own version number. One could use resource filtering to produce a customized allAboutMe.properties explicitly, containing anything Maven knows and is willing to provide to a filter. But I too would like to know what the supported method is, and where that is documented. -- Mark H. Wood, Lead System Programmer mw...@iupui.edu Asking whether markets are efficient is like asking whether people are smart. pgpCrDz1zpYUq.pgp Description: PGP signature
Re: Could we delete old version jar in local repository by mvn ?
On Wed, Jan 04, 2012 at 10:19:15PM +0100, Ansgar Konermann wrote: Am 04.01.2012 05:02, schrieb zuxiong lin: Append like: repository\org\springframework\spring-core -3.0.5.RELEASE -3.0.6.RELEASE -3.1.0.RELEASE I want to remove 3.0.5 and 3.0.6. The local maven repository is an artifact cache. Why do you want to remove anything from this cache? This does not reliably control what versions maven will use to build your project. Because it is not a cache; it is a dumping ground for every artifact Maven has ever fetched, whether or not that artifact will ever again be called for. Proper caches are limited by age, size, or both, but the local Maven repository grows without limit. Some people would like to evict probably-useless artifacts from the cache and reclaim the storage they occupy as well as the time spent rummaging through all those directory entries. [All together now: storage is cheap! Storage is not free, and the time and effort to put through a requisition, take delivery, schedule a machine down, rip it open, install more storage, close it up, test it, and return it to service is definitely not free and often far from cheap. A reasonably tidy system does more and costs less.] That said, I think I wouldn't bother cleaning out any 3.x until 4.1 ships, or until they're at least 12 months old. Too-aggressive cache trimming is much more costly than no trimming at all. Can Maven log artifact fetches and cache hits in a way that would be useful for developing statistics on artifacts' useful lifetimes, so we could concoct well-thought-out cache maintenance strategies? Or maybe it would be easier to just write a script to clobber anything with an atime more than 180 days in the past. -- Mark H. Wood, Lead System Programmer mw...@iupui.edu Asking whether markets are efficient is like asking whether people are smart. pgpXk18cBoBRW.pgp Description: PGP signature
hyperlinks out of description?
Is there any way to embed hyperlinks in the POM description element? If I put them in plain, the result is an invalid document; if I wrap them in CDATA then the markup comes through. Adding and using the XHTML namespace made no difference with the plain markup. The description seems like the right place to link to e.g. protocol specifications and other standards. Like: BaloneySoft FooPlex implements aour profile/a of aRFC 1149/a. -- Mark H. Wood, Lead System Programmer mw...@iupui.edu Asking whether markets are efficient is like asking whether people are smart. pgpxGoyowWWJI.pgp Description: PGP signature
Re: How to configure plugin with default values
On Thu, Aug 18, 2011 at 10:40:23AM -0600, David Hoffer wrote: I'm creating a plugin and having trouble getting the container (plexus) to configure initial values. I've started with the dependency plugin as a basis and see that somehow mojo parameters get set with default values...I assume this is happening by the container but what's the secret to making this work? I've added some new mojo http://maven.apache.org/guides/plugin/guide-java-plugin-development.html You add a 'default-value=something' to the @parameter annotation, and something (I'm not sure it's plexus, at least not directly) will evaluate the string value and attempt to convert it to something compatible with the type of the parameter field, if no value was configured externally. The bit that's not well documented is that you can pluck property values such as ${project.build.directory} out of the model by writing them in the default-value string. Apparently this is the proper way to discover model values and the like, though I've found nothing authoritative yet that actually says do it this way. parameters following the same convention and they are null at runtime (running unit test). Is there some documentation on the creating/wiring of plugin mojos to the container? Some. Not enough. When I figure out some of the missing stuff I will write some more. -- Mark H. Wood, Lead System Programmer mw...@iupui.edu Asking whether markets are efficient is like asking whether people are smart. pgpfuDT2RpVxp.pgp Description: PGP signature
Re: When is the best phase to generate javadocs?
Yes, you *could* rely on your IDE to show you the Javadoc *for the class or method you're currently focused on*. But then you'd miss seeing that you forgot to write the overview, you forgot to write most of the package comments, or that 80% of your classes and methods have either no topic sentence, a useless one, or one that is bizarrely formatted and unreadable. Or the amount of material that doesn't really say anything which would help someone not already intimately familiar with the code. Documentation should be generated and reviewed regularly. -- Mark H. Wood, Lead System Programmer mw...@iupui.edu Asking whether markets are efficient is like asking whether people are smart. pgptFSx7Kd4SD.pgp Description: PGP signature
Re: How can a plugin become aware of its environment (e.g. properties)?
On Sat, Aug 06, 2011 at 03:08:34PM +0200, Baptiste MATHUS wrote: Well, you were in the right place. http://maven.apache.org/guides/plugin/guide-java-plugin-development.html What are you missing? Any indication of what one should put into the default-value to get a handle on the mojo's entire environment. Any indication of what type one will receive when doing so, so that one can go look at the API doc.s and see what methods and attributes are available. As often today in programming, Maven mojo gets external property via dependency injection. That is, just declare your attribute with the right @parameter expression settings and your field will just get -DyourParam injected. Since I'm writing a mojo to filter any available properties into a file being built, I need an array or collection of *all* project properties, so I need to go to the model and get what it has. -- Mark H. Wood, Lead System Programmer mw...@iupui.edu Asking whether markets are efficient is like asking whether people are smart. pgp7qeuEpUSU4.pgp Description: PGP signature
Re: How can a plugin become aware of its environment (e.g. properties)?
On Sat, Aug 06, 2011 at 03:11:05PM +0200, Baptiste MATHUS wrote: And by the way, documentation is cool. But even better is look for real-life example. And what's cool with opensource is that it's easy to find a bunch of examples from simple to very complex. Just because X worked for someone sometime doesn't mean it will work for someone else in a different environment, or that it was meant to work that way and will continue to work. An example could be a fluke; documentation is a promise. Good documentation also explains *why* something works, so that you can more readily think about similar problems in context. It imparts knowledge, not just a datum. What's cool about open source is that, when the documentation is useless and the examples are all unexplained magic, I can go read the source and find out what's actually going on. And then I can fix the documentation. -- Mark H. Wood, Lead System Programmer mw...@iupui.edu Asking whether markets are efficient is like asking whether people are smart. pgpYnPYiREnFe.pgp Description: PGP signature
Re: How can a plugin become aware of its environment (e.g. properties)?
On Thu, Aug 04, 2011 at 04:05:10PM -0400, Mark H. Wood wrote: Back to topic: I'm writing a plugin that needs access to the project's properties. Nothing environmental is passed to a mojo, and fishing through the Javadocs for static methods that look promising has turned up nothing so far. What *should* I be reading? Well, after more hours of fishing, it looks like people are cobbling this together by declaring a @readonly @parameter default-value=${project} and calling getSomething() on the injected object. It seems to work, but is this officially documented anywhere? -- Mark H. Wood, Lead System Programmer mw...@iupui.edu Asking whether markets are efficient is like asking whether people are smart. pgpR2iBzAKZtv.pgp Description: PGP signature
How can a plugin become aware of its environment (e.g. properties)?
First: if I'm writing a plugin for my own use, am I a user or a developer? I'm not developing Maven itself and the Developer Centre page admits of nothing in between. Back to topic: I'm writing a plugin that needs access to the project's properties. Nothing environmental is passed to a mojo, and fishing through the Javadocs for static methods that look promising has turned up nothing so far. What *should* I be reading? Lots of other questions about plugin development, that the Plugin Developer Centre doesn't address -- Mark H. Wood, Lead System Programmer mw...@iupui.edu Asking whether markets are efficient is like asking whether people are smart. pgp1h9RflW4e2.pgp Description: PGP signature
Filter files from modules during assembly?
I need to build an assembly by gathering up files from sub-modules, *and* I need to filter one of the files. In Maven 2.2 there doesn't seem to be any way to do both: files can't appear inside a moduleSet, and only file implements filter. Am I missing something? -- Mark H. Wood, Lead System Programmer mw...@iupui.edu Asking whether markets are efficient is like asking whether people are smart. pgp8TDUMrJPL7.pgp Description: PGP signature
Re: Re : m2Eclipse
On Thu, Jun 03, 2010 at 02:10:51PM -0400, Greg Akins wrote: Turns out I missed the requirement for the m2Eclipse extras .. those contain the SCM integration plugins. Looks like Subversive is supported by the SCM Integration.. Subclipse requires an additional provider. Aha! I've been sticking with Eclipse 3.4 for months because, when trying to check out a Maven project set from SCM, I would get a dialog demanding to know which SCM using a disabled droplist control. The list was empty, because no providers were installed. Ugh. It works now, though I had to AltaVista for m2Eclipse extras to find the separate site on which they live. How did we miss this? -- Mark H. Wood, Lead System Programmer mw...@iupui.edu Balance your desire for bells and whistles with the reality that only a little more than 2 percent of world population has broadband. -- Ledford and Tyler, _Google Analytics 2.0_ pgpn2NTCsb7af.pgp Description: PGP signature
Re: Central repository, bundle-create and distribution of licenses
On Tue, May 18, 2010 at 07:52:48PM +0100, Bruno Harbulot wrote: I'm not saying that the central repo should investigate each and every case to check that it's indeed true, but it should make it mandatory to have a licence at least so as to avoid to put software that is mistakenly unattributed (and thus often in breach of the licence). What is the URL for the license to software which is placed in the public domain? If you can answer that, then yes, I'd agree that it would be reasonable for a repo. to check that the POM lists a license and even that the link is not broken. What is *in* that target document is probably beyond the scope of the present software. If it's a copy of Jabberwocky or Lorem Ipsum, that's the submitter's problem. As a publisher of a piece of software, I did put the LICENSE.txt file in my bundle linked from http://jira.codehaus.org/browse/MAVENUPLOAD-2293 (via the default settings of maven-repository-plugin 2.0 at the time), having the expectation that it would be distributed along with the artifacts in the bundle. What led you to believe that this would happen? If you put it into a src/main/resources directory then it should have been packed up into the archive, but I don't see anything which says that anything else shall be done with it. -- Mark H. Wood, Lead System Programmer mw...@iupui.edu Balance your desire for bells and whistles with the reality that only a little more than 2 percent of world population has broadband. -- Ledford and Tyler, _Google Analytics 2.0_ pgppbMvNnITRI.pgp Description: PGP signature
Re: I have the right version, but maven can't find it
On Wed, Apr 28, 2010 at 09:55:05AM +0200, Jörg Schaible wrote: [snip] but you should probably ask the developers of the artifacts in question why they think they need exactly those versions. Find the artifacts with dependency:tree. Definitely ask them that. I find that depending on a specific version is often a sign of poor-quality code (perhaps the dependent, perhaps the dependency, could even be both). -- Mark H. Wood, Lead System Programmer mw...@iupui.edu Balance your desire for bells and whistles with the reality that only a little more than 2 percent of world population has broadband. -- Ledford and Tyler, _Google Analytics 2.0_ pgpzkvAKU9TZU.pgp Description: PGP signature
Re: Can Maven POM be named as POM.XML
On Wed, Apr 14, 2010 at 05:11:28AM -0400, Garin Yan wrote: I tried again on Ubuntu Linix and found that it is case-sensitive while on Windows it is not. I am sorry that I had made a not all-inclusive conclusion. Correct. Most filesystem types on Unix or Linux will be case-sensitive. NTFS (on Windows) is case-preserving but case-insensitive: if you name a file cAmElCaSe it will remember the capitalization, but will give you that file even if you ask for camelcase or CamelCase or CAMELCASE. -- Mark H. Wood, Lead System Programmer mw...@iupui.edu Balance your desire for bells and whistles with the reality that only a little more than 2 percent of world population has broadband. -- Ledford and Tyler, _Google Analytics 2.0_ pgpzmQ2z0sqAi.pgp Description: PGP signature
Re: Dealing with artifacts that have been moved - What to do?
On Thu, Mar 18, 2010 at 04:21:35PM -0400, Justin Edelson wrote: [snip] In all seriousness, you should publish this as Ron's Best Practices. I'll second that. If you want a Maven Best Practices document, the surest way to get one is to start writing it. If you put something up on Lulu or whatever, I would read it and I would probably recommend it to others. There isn't enough documentation about Maven; I just don't think the community can produce the type of documentation you're describing. Depending on what you mean by produce, I may have to disagree here. Community input is vital to discovering which Practices are Best. One doesn't just sit and think until a nice neat list of BPs drops into one's brain; one collects a *lot* of stories about what has worked and not worked, looking for patterns. It can't be done without the community's data, and it may be done much more easily and quickly if community members discuss and debate the meaning of the data as they accumulate. I don't mean to say that a sea of voices, all equal, will necessarily produce a high-quality piece of scholarship. The effort needs a good leader with an eye for patterns, to guide discussions along promising paths as they emerge, and to organize the resulting understanding into a coherent whole. -- Mark H. Wood, Lead System Programmer mw...@iupui.edu pgpNP5rgaj82h.pgp Description: PGP signature
Re: Refactoring the Maven Build
As good and as pervasive as Maven is, if you review build tools then you may want to take a look at Ivy too. I plan to. Yes, Maven is hard to learn. The web site doesn't quite seem to be organized either for learning *or* for reference. The only book I could find when I went looking for one, _Maven: the Definitive Guide_, would have to be three times as thick if it were really definitive. Everything the new user reads praises convention over configuration and then doesn't tell you the conventions. Maven embodies some very definite ideas about how software should be built. If you try going some other way, Maven will smack your hand over and over until you winkle out what it wants you to do. Maven wants to be in control of things. It downloads what it wants, when it wants to, without asking. It puts things where it wants to, without telling you where they went. You must accept this. It is a thing that goes down hard for many developers. Maven is not readily discoverable. The way to get basic help from it is a complex formula that stretches all the way across the screen. The usual ways of asking a tool how it works will yield either reminders of things the newbie wasn't ready to learn, or a screenful of seeming gibberish. All that said, once you have scaled the learning wall (I'm maybe 40% up) Maven will do a good job for you so long as you use it the way it expects to be used. I haven't given up on it. (Oh, no! I've suffered enough that I won't rest until Maven cringes before my stern gaze, whimpering, what is thy will, O my master? as a good tool should.) -- Mark H. Wood, Lead System Programmer mw...@iupui.edu Friends don't let friends publish revisable-form documents. pgpvnosedEGcZ.pgp Description: PGP signature
Curiosity: why does site plugin always re-download woodstox:wstx-asl?
??? I checked my local repository and it contains wstx-asl-3.2.7.jar and wstx-asl-3.2.7.jar.sha1, but not the maven-metadata-*.xml that I'm accustomed to seeing. -- Mark H. Wood, Lead System Programmer mw...@iupui.edu Friends don't let friends publish revisable-form documents. pgpLthSflodYV.pgp Description: PGP signature
Re: Transitive exclusions in multi-module project with Maven 2.2.1
On Wed, Feb 03, 2010 at 04:50:23PM +0100, Lóránt Pintér wrote: I have a project called Client that depends on a side-artifact of project Server (actually, its RMI client classes; the artifact has the classifier rmi), but excludes each of Server's dependencies. I also Shouldn't the RMI stuff be factored out as a common dependency of Client and Server? That's what I do with CORBA which is fairly similar. -- Mark H. Wood, Lead System Programmer mw...@iupui.edu Friends don't let friends publish revisable-form documents. pgp0mkspFRTCd.pgp Description: PGP signature
Re: Compile what can be compiled, ignore sources with errors
On Fri, Jan 29, 2010 at 12:31:06PM +0100, Christoph Kutzinski wrote: Why do you want to do this? Why not just fix the compile errors? Likely the same reason that compiler writers have spent so much time studying error recovery in parsers: to discover as many errors as possible in one iteration. Fewer iterations, each one more productive. You also get a better feel for just how buggy the code is, and for patterns of problems, by seeing everything that *doesn't* fail to compile. It's useful to be able to answer questions like, this is happening all over the place -- is there a deeper problem? Of course that has to be balanced against the fact that, when compiling X against broken Y, you may not get a true picture of the status of X. -- Mark H. Wood, Lead System Programmer mw...@iupui.edu Friends don't let friends publish revisable-form documents. pgpCFXpy2ucDp.pgp Description: PGP signature
Re: assembly is deprecated. What to use?
Thanks for pointing out my version confusion. On Wed, Dec 09, 2009 at 04:12:29PM +0100, Jörg Schaible wrote: Mark H. Wood wrote at Mittwoch, 9. Dezember 2009 15:09: mw...@mhw ~ $ mvn --version CompilerOracle: exclude org/eclipse/core/internal/dtree/DataTreeNode.forwardDeltaWith Apache Maven 2.2.1 (r801777; 2009-08-06 15:16:01-0400) Java version: 1.6.0_17 Java home: /opt/sun-jdk-1.6.0.17/jre Default locale: en_US, platform encoding: UTF-8 OS name: linux version: 2.6.30-gentoo-r5 arch: i386 Family: unix There seems something else fundamentally broken with your setup, looking at this strange CompilerOracle message. Oh, that is the result of this: mw...@mhw ~ $ cat .hotspot_compiler exclude org/eclipse/core/internal/dtree/DataTreeNode forwardDeltaWith mw...@mhw ~ $ which is required to work around a bug in the Sun compiler that is vigorously exercised by Eclipse, leading to Eclipse crashing on startup. It suppresses JIT compilation of that method IIRC, and I don't see that it would affect Maven at all. -- Mark H. Wood, Lead System Programmer mw...@iupui.edu Friends don't let friends publish revisable-form documents. pgp846FgbbrPx.pgp Description: PGP signature
Re: assembly is deprecated. What to use?
On Wed, Dec 09, 2009 at 07:45:52AM +1100, Brett Randall wrote: Yes, this one: http://jira.codehaus.org/browse/MPH-59 Describe goal says everything is deprecated. Says fixed in 2.1.1. Seems to be broken differently in 2.2: mw...@mhw ~ $ mvn help:describe -Ddetail=true -Dplugin=assembly CompilerOracle: exclude org/eclipse/core/internal/dtree/DataTreeNode.forwardDeltaWith [INFO] Scanning for projects... [INFO] Searching repository for plugin with prefix: 'help'. [INFO] [INFO] Building Maven Default Project [INFO]task-segment: [help:describe] (aggregator-style) [INFO] [INFO] [help:describe {execution: default-cli}] [INFO] Plugin: 'org.apache.maven.plugins:maven-assembly-plugin:2.2-beta-4' --- Group Id: org.apache.maven.plugins Artifact Id: maven-assembly-plugin Version: 2.2-beta-4 Goal Prefix: assembly Description: A Maven 2 plugin to create archives of your project's sources, classes, dependencies etc. from flexible assembly descriptors. [INFO] [INFO] BUILD SUCCESSFUL [INFO] [INFO] Total time: 1 second [INFO] Finished at: Wed Dec 09 09:04:13 EST 2009 [INFO] Final Memory: 4M/8M [INFO] mw...@mhw ~ $ mvn --version CompilerOracle: exclude org/eclipse/core/internal/dtree/DataTreeNode.forwardDeltaWith Apache Maven 2.2.1 (r801777; 2009-08-06 15:16:01-0400) Java version: 1.6.0_17 Java home: /opt/sun-jdk-1.6.0.17/jre Default locale: en_US, platform encoding: UTF-8 OS name: linux version: 2.6.30-gentoo-r5 arch: i386 Family: unix mw...@mhw ~ $ -- Mark H. Wood, Lead System Programmer mw...@iupui.edu Friends don't let friends publish revisable-form documents. pgp2gpGUVDDQs.pgp Description: PGP signature
multi-module 'site-deploy' gets inter-module links wrong
I'm trying to work out how to use the site plugin with a multimodule product. I've worked my way through how site:site creates the modules' sites individually. Both site:stage and site-deploy still seem to have a problem, or I have a problem with them. When using site-deploy, the modules' files get *deployed* properly but whatever builds the links between them is confused. The parent page shows the sub-module in its navigation bar, but there is no link, same as e.g. About when you are on the About page. Likewise the sub-module's navigation bar lists the parent but not as a link, as if it were its own parent or something. I've had the same behavior from 2.0.10 and 2.2.1. POMs attached. -- Mark H. Wood, Lead System Programmer mw...@iupui.edu Friends don't let friends publish revisable-form documents. pom.xml Description: parent POM pom.xml Description: sub-module POM pgp22IRZGbKDL.pgp Description: PGP signature
Re: multi-module 'site-deploy' gets inter-module links wrong
On Mon, Dec 07, 2009 at 08:53:02PM +0100, Dennis Lundberg wrote: The Site Plugin uses the url element of the POM do determine relative links between parent/child sites. In your example both the parent and the child point to the same url, making the Site Plugins think that they are in the same place. Hence no links. *sigh* Of course it does. And if I leave out that bit of Configuration (the url element) in the sub-module POM then a Convention supplies the structure automagically. Okay, it's consistent and I'm unobservant. Thanks! -- Mark H. Wood, Lead System Programmer mw...@iupui.edu Friends don't let friends publish revisable-form documents. pgpGsbztrHmkR.pgp Description: PGP signature
Properties conditional on phase?
I want to have a property defined only during certain phases -- I want to make certain that it doesn't leak out into the packaging, for example. Is there a way to do that? -- Mark H. Wood, Lead System Programmer mw...@iupui.edu Friends don't let friends publish revisable-form documents. pgpGaJnO2DZZI.pgp Description: PGP signature
Re: maven repository update.
What the new user is missing is that the concept up-to-date is overloaded and means very different things depending on whether it is applied to a snapshot or to a release. To make a long story short: if a released package needed repair then the repaired version needed a new version number. This is well known to be good practice since long before Maven came along, even though we all know of cases where someone got away with ignoring it. The correct response, upon noticing that two package release copies of equal version number differ, is not I'd better update but this is WRONG, sound the alarm! The -help blurb could perhaps be improved by distinguishing between updated snapshot and higher release version to show that the concepts are different. It would at least prompt some of us to wonder, what's different about these, and maybe go find out. As a newbie myself, I often find that the Maven documentation assumes far too much knowledge of the celebrated conventions and contains too few pointers to them for the uninitiated. That's why I bought the book. Yes, I will try to remember to report specific cases when I see them. -- Mark H. Wood, Lead System Programmer [EMAIL PROTECTED] Typically when a software vendor says that a product is intuitive he means the exact opposite. pgpoDq4zfbsxF.pgp Description: PGP signature
Re: Making the case for Maven to managment
Nah, we can drop ideology in the bitbucket. It's a matter of using the tool that best does the job. Maven is really good at representing the structure of large, complex projects simply, and pretty good at organizing the large-scale flow of operations involved in realizing them. Ant is rather good at giving you very close control of how specific tasks are carried out, when you are willing to do a lot of writing. Together they make a good team. You may find that specific step-by-step processing which is difficult to express in Maven is easily accomplished in Ant, and that structures which are overwhelmingly wordy in Ant become concise and natural in Maven. So, if you need both, use both. But use each where it helps more than it hurts. If you can do 90% of the task faster and with fewer mistakes in Maven, use it for that 90%. If the last 10% won't go in naturally, then use Ant for the 10% -- forcing the tool is one common source of errors and delays. -- Mark H. Wood, Lead System Programmer [EMAIL PROTECTED] Typically when a software vendor says that a product is intuitive he means the exact opposite. pgpGoHZAJTjsh.pgp Description: PGP signature