Maven error reguarding war files & pom.xml - maven

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.my.ssat</groupId>
<artifactId>myssatProject</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>myweb</artifactId>
<packaging>war</packaging>
<name>myweb</name>
</project>
Cannot access default field of properties
web.xml is missing and is set to true.
I am getting these errors whenever I create maven module in (war) format

Related

How to create Multi-Module project on Maven?

I am trying to make a new multi-module Spring project with Maven. I have one main Pom.xml, and to other modules.
This is the main pom.xml :
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.ev</groupId>
<artifactId>multi</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<modules>
<module>main</module>
<module>user</module>
</modules>
And this is the module1 pom.xml :
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>multi</artifactId>
<groupId>org.ev</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>user</artifactId>
</project>
Where should i add the dependencies? When i put them into main pom.xml , i get an error "cant resolve pom" .
Do you have any idea about this issue? Because its very hard to create multi module project for me.
try to change main/pom.xml
<artifactId>multi</artifactId>
to
<artifactId>main</artifactId>

What tags are really required or recommended when using packaging type pom in Maven?

Once you set packaging equal to pom, do you need the groupID, artifactId and version tags and if so, what purpose do they serve? Are there any tags you should use (after all groupID is clearly intended for java so I wouldn't be surprised if there are other language or artifact type specific tags that should be used). Samples:
Simple parent pom:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.company</groupId>
<artifactId>project_name</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
<modules>
<module>hosts</module>
</modules>
</project>
Simple child pom:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.company</groupId>
<artifactId>hosts</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
</project>
Then sub children are various projects of many types, java, C++, angular, python, more poms.
You need all those tags.
The POMs are deployed along with the JARs, WARs etc. with their respective Maven coordinates (GroupId, ArtifactId, Version). They are resolved if anybody uses e.g. a dependency with your parent.

Maven build is failing with error could not find artifact

I have a project demo-parent which contains 2 subprojects child1 and child2.
demo-parent is building a pom.
child1 and child2 are building one jar each. And all these are getting uploaded to the artifactory.
demo-parent(also used flatten plugin)
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.demos</groupId>
<artifactId>demo-parent</artifactId>
<packaging>pom</packaging>
<version>${revision}</version>
<properties>
<revision>1.0-SNAPSHOT</revision>
</properties>
...
</project>
child1 and child 2
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.demos</groupId>
<artifactId>child1</artifactId>
<packaging>jar</packaging>
<parent>
<groupId>com.demos</groupId>
<artifactId>demo-parent</artifactId>
<version>${revision}</version>
</parent>
<properties>
<revision>1.0-SNAPSHOT</revision>
</properties>
...
</project>
This project is building and uploading fine. Now when I use this child1 or child2 as a dependency in other projects, it fails with the error:
Failed to execute goal on project maven-webapp: could not resolve dependencies for the project com.demos:maven-webapp:war:1.01: Failed to collect dependencies at com.demos:child1:jar:1.0-SNAPSHOT: Failed to read artifact descriptor for com.demos:child1:jar:1.0-SNAPSHOT: Could not find artifact com.demos:demp-parent:pom:{revision} in artifactory .
I am not getting why it is searching for com.demos:demo-parent:pom:{revision}, even if searching why revision is not getting replaced by 1.0-SNAPSHOT as I have used <revision>1.0-SNAPSHOT</revision> in child1.

Maven insist using local parent rather than remote WITHOUT relativePath mentioned

I have a test project which is based on a parent project. This parent is build beforehand and is available on local artifactory server. The parent project is not available locally and this should stay this way.
As you see I am not using the relativePath element.
Still, when running "mvn clean install -U" I get an error about missing parent.
[ERROR] Non-resolvable parent POM for com.test.example:test:0.0.1-SNAPSHOT: Could not find artifact com.test:projects-parent:pom:0.0.1-SNAPSHOT and 'parent.relativePath' points at wrong local POM # line 6, column 10 -> [Help 2]
The test project pom.xml is:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.test.example</groupId>
<artifactId>test</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>test</name>
<parent>
<groupId>com.test</groupId>
<artifactId>projects-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<dependencies>
...
</dependencies>
<build>
...
</build>
</project>
Here is the parent pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.3.RELEASE</version>
</parent>
<groupId>com.test</groupId>
<artifactId>projects-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
</project>
According to this, the default value for <relativePath> is ../pom.xml, so Maven will look locally first.
If you want to force the lookup to occur in your repository manager, use this trick:
<parent>
<groupId>com.test</groupId>
<artifactId>projects-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<relativePath/> <!— This forces a lookup against the repo —>
</parent>

maven multimodule project-Update POM parent section in selected projects

I am creating multimodule project using maven in eclipse.After configuring parent in that configuration tab,to add modules I have selected Add and selected the modules to be added and I have checked the 'Update POM parent section in selected projects'.But it doesnot include the parent information in the selected modules.
I was not aware that such a feature exists, but you can do it by your own, with more reliability adding those lines to your parent pom :
parent pom.xml
Here put your modules configuration
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.company.bla.bla</groupId>
<artifactId>you-parent-artifact</artifactId>
<version>1.0</version>
<modules>
<module>module-child-1</module>
<module>module-child-2</module>
</modules>
childs pom.xml
Here put you parent reference and ommit version
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.company.bla.bla</groupId>
<artifactId>you-parent-artifact</artifactId>
<version>1.0</version>
</parent>
<artifactId>child-1</artifactId>
More information here : http://www.sonatype.com/books/mvnex-book/reference/multimodule.html

Resources