当我运行maven命令如"mvn install"或"mvn validate"时,maven将输出它所构建的所有项目的工件id。我想在脚本中使用此输出,然后调用类似于以下命令的命令:
mvn clean install -pl <comma separated list of groupId:artifactId>
不幸的是,我还没能找到如何让maven输出组Id以及工件Id。到目前为止,我已经梳理了maven反应器和依赖项插件,但还没有找到任何结果。有什么办法可以做到吗?
编辑:原来你可以使用只是工件Id,如果你把一个冒号在它前面。如
mvn clean install -pl :fooProject,:barProject
maven默认情况下不支持这个,很难修复它将输出项目名称
这里是相关的来源
private void logReactorSummary( MavenSession session )
{
logger.info( chars( '-', LINE_LENGTH ) );
logger.info( "Reactor Summary:" );
logger.info( "" );
MavenExecutionResult result = session.getResult();
for ( MavenProject project : session.getProjects() )
{
StringBuilder buffer = new StringBuilder( 128 );
buffer.append( project.getName() );
buffer.append( ' ' );
if ( buffer.length() <= MAX_PROJECT_NAME_LENGTH )
{
while ( buffer.length() < MAX_PROJECT_NAME_LENGTH )
{
buffer.append( '.' );
}
buffer.append( ' ' );
}
BuildSummary buildSummary = result.getBuildSummary( project );
if ( buildSummary == null )
{
buffer.append( "SKIPPED" );
}
else if ( buildSummary instanceof BuildSuccess )
{
buffer.append( "SUCCESS [" );
String buildTimeDuration = formatDuration( buildSummary.getTime() );
int padSize = MAX_PADDED_BUILD_TIME_DURATION_LENGTH - buildTimeDuration.length();
if ( padSize > 0 )
{
buffer.append( chars( ' ', padSize ) );
}
buffer.append( buildTimeDuration );
buffer.append( "]" );
}
else if ( buildSummary instanceof BuildFailure )
{
buffer.append( "FAILURE [" );
String buildTimeDuration = formatDuration( buildSummary.getTime() );
int padSize = MAX_PADDED_BUILD_TIME_DURATION_LENGTH - buildTimeDuration.length();
if ( padSize > 0 )
{
buffer.append( chars( ' ', padSize ) );
}
buffer.append( buildTimeDuration );
buffer.append( "]" );
}
logger.info( buffer.toString() );
}
}
如果你仍然想这样做,签出源代码,更新这个方法以输出你想要构建maven的方式,并开始使用你本地构建的maven