Is there a Java Class that generates a POM.xml file?

后端 未结 4 2147
梦毁少年i
梦毁少年i 2020-12-05 07:54

In my job project I have recently been asked to generate POM files via a java class. The problem is that I am very, very new to Maven (like since last December).

Wha

4条回答
  •  长情又很酷
    2020-12-05 08:26

            MavenXpp3Reader reader = new MavenXpp3Reader();
            Model pomModel = reader.read(new FileReader(pomLibFile));
            final List dependencies= pomModel.getDependencies();
            final List modules= pomModel.getModules();
            final List profiles = pomModel.getProfiles();
    
            InputStream inputStream = new FileInputStream(new File(pomLibFile));
            StringWriter writer = new StringWriter();
            IOUtils.copy(inputStream, writer, "utf-8");
            pomModel.getDependencyManagement();
            final Properties properties = new Properties();
            properties.load(new FileInputStream(pomProperties));
            RegexBasedInterpolator interpolator = new RegexBasedInterpolator();
    
            interpolator.addValueSource( new EnvarBasedValueSource() );
            interpolator.addValueSource( new PropertiesBasedValueSource( properties ) );
    
            List synonymPrefixes = new ArrayList();
            synonymPrefixes.add( "project." );
            synonymPrefixes.add( "pom." );
    
            PrefixedValueSourceWrapper modelWrapper = new PrefixedValueSourceWrapper( new ObjectBasedValueSource( pomModel ),synonymPrefixes, true );
            interpolator.addValueSource( modelWrapper );
    
            PrefixedValueSourceWrapper pomPropertyWrapper = 
                    new PrefixedValueSourceWrapper( new PropertiesBasedValueSource( pomModel.getProperties() ), synonymPrefixes,  true );
            interpolator.addValueSource( pomPropertyWrapper );
    
            interpolator.addValueSource( new PropertiesBasedValueSource( properties ) );
    
            RecursionInterceptor recursionInterceptor = new PrefixAwareRecursionInterceptor( synonymPrefixes, true );
    
            String serializedPOM = interpolator.interpolate( writer.toString(), recursionInterceptor );
            System.out.println("-------- "+serializedPOM);;
    

    Reference : http://plexus.codehaus.org/plexus-components/plexus-interpolation/index.html

    though I am still stuck if I have to add multiple (unknown number of) dependencies.

提交回复
热议问题