[ https://issues.apache.org/jira/browse/HBASE-6145?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13287995#comment-13287995 ]
Jesse Yates commented on HBASE-6145: ------------------------------------ A pretty in depth analysis, hopefully not too much: Patch didn't apply cleanly with git, but got it go with basic patch command (mostly - looks like you might be a little behind in the docbkx?). I'm just going to step through per pom… hbase-server/pom.xml {quote} + <version>${avro.version}</version> {quote} This (and the rest of the dependency info) should be in the parent pom's dependencyManagement section. Just as general style, if another module wants to use avro, they should just declare the dependency, and not worry about making sure they have the right version, excludes, etc (I know we are dropping avro soon, but we should still do the right thing). Also, looks like your spacing is off for the added dependencies - 2 spaces, not tabs in xml. hbase-common/pom.xml {quote} + <plugins> + <plugin> + <artifactId>maven-surefire-plugin</artifactId> {quote} This can/should stay in the pluginManagement section. Surefire is part of the default maven things to run, so it will just pick up the configuration/executions from the management section - this also keeps all the surefire stuff in the same sections in all poms. Also, does anything actually happen if we remove: {quote} + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-site-plugin</artifactId> {quote} from this pom? It may create the target/site (side effect of site being a core part of maven, so all modules can respond to it), but is any actual work done? Okay, onto the parent pom (/hbase/pom.xml): Why the removal of the hbase-assembly module? In the official docs, it actually says to use an assembly module. This is particularly poignant because the alternative is to use the assembly:assembly descriptor, which is deprecated… The docs say that you can use assembly:assembly from within the parent pom (but doesn't say what that actually means) - any way to tie the assembly:single phase to call the assembly:single/:assembly phase in the children poms? In src/assembly/all.xml, this comment is no longer applicable. {quote} <!-- This is only necessary until maven fixes the intra-project dependency bug in maven 3.0. Until then, we have to include the test jars for sub-projects. When fixed, the below dependencySet stuff is sufficient for pulling in the test jars as well, as long as they are added as dependencies in this project. Right now, we only have 1 submodule to accumulate, but we can copy/paste as necessary until maven is fixed. --> {quote} Also, it would be awesome to move file set matching to a more general regex, rather than tying it to the maven property (which is defined in the main pom). General nit: I prefer having the properties above the build, since the properties are used in the build section, but that's just style. {quote} <!--Pass -DskipJavadoc=true on command-line to skip javadoc building--> {quote} when building the site? Also, can't you just pass in -DskipJavadoc? {quote} <version>${maven.assembly.version}</version> {quote} and {quote} <version>${maven.site.version}</version> {quote} Would be nice to add: {code} <!--$NO-MVN-MAN-VER$--> {code} to the end of the lines to remove the eclipse warning {quote} <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>xml-maven-plugin</artifactId> {quote} configuration formatting is off. {quote} <execution> <id>copy-docbkx</id> <goals> <goal>copy-resources</goal> </goals> <phase>pre-site</phase> <configuration> <outputDirectory>target/site</outputDirectory> <resources> <resource> <directory>${basedir}/target/docbkx</directory> <includes> <include>**/**</include> </includes> </resource> </resources> </configuration> </execution> </executions> <configuration> <escapeString>\</escapeString> </configuration> {quote} Is the escape string new here? What property are you avoiding overriding? Also, why are you moving them in the first place? You can just set the target directory to be ${basedir}/target/docbkx in the docbkx plugin: {code} <groupId>com.agilejava.docbkx</groupId> <artifactId>docbkx-maven-plugin</artifactId> {code} Here, you can also move the common traits to the 'top level' configuration for the plugin, then just put the differences in each execution. For example: {code} <plugin> <groupId>com.agilejava.docbkx</groupId> <artifactId>docbkx-maven-plugin</artifactId> <version>2.0.14</version> <inherited>false</inherited> <dependencies> <!--… some stuff --> </dependencies> <configuration> <!--common configuration stuff here --> </configuration> <executions> <execution> <id>multipage</id> <goals> <goal>generate-html</goal> </goals> <phase>pre-site</phase> <configuration> <!-- multi-page configuration stuff here --> … {code} This also seems excessive: {quote} <plugin> <artifactId>maven-resources-plugin</artifactId> <version>${maven.resources.plugin.version}</version> <inherited>false</inherited> <executions> <execution> <id>copy-javadocs</id> <goals> <goal>copy-resources</goal> </goals> <phase>pre-site</phase> {quote} With the aggregate goal, you can just have all the javadocs copied into the right directory in this module when you build them; at least that is what is was doing before. {quote} <artifactId>maven-assembly-plugin</artifactId> <version>${maven.assembly.version}</version> <inherited>false</inherited> <configuration> {quote} Whitespace is messed up for the configuration section (and actually the whole section - spaces, not tabs!) It would be sweet if we can get the eclipse natures/inclusions fixed for {quote} <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-eclipse-plugin</artifactId> <version>2.8</version> </plugin> {quote} This way the hbase top level folder wouldn't have a java nature by default. Also, for instance, we can add the assembly, docbkx, etc stuff for /hbase as src folders, and for hbase-server finally fix having to fix the classpath when you load it into eclipse (or do eclipse:eclipse). See: http://maven.apache.org/plugins/maven-eclipse-plugin/examples/specifying-source-path-inclusions-and-exclusions.html The latter might be a little out of scope for this ticket, but if you have the time... Other than that, looks good to me (didn't try building/testing yet). Good stuff stack. > Fix site target post modularization > ----------------------------------- > > Key: HBASE-6145 > URL: https://issues.apache.org/jira/browse/HBASE-6145 > Project: HBase > Issue Type: Task > Reporter: stack > Assignee: stack > Attachments: site.txt, site2.txt, sitev3.txt > > -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira