Angular portlet throws exception path does not start with a "/" character - liferay-7

On Liferay github there is sample portlet which uses Angular https://github.com/liferay/liferay-blade-samples/tree/master/gradle/apps/npm/angular-npm-portlet
I've created my own portlet using maven command mvn archetype:generate -Dfilter=liferay
choose: 12
and after that I've built it and deployed to tomcat and exception was thrown:
07:29:02,097 ERROR [http-nio-8080-exec-2][ComboServlet:89] java.lang.IllegalArgumentException: Path samplePortlet#1.0.0.js does not start with a "/" character
any idea how to fix this ?

I guess that you run the generate command and then you try to do mvn clean install. The error is a cryptic one but one of the cases that you can get it is when the combo servlet can't find the dependency in the jar file. There is not yet a maven wrapper for the npm functionality.
You can do 2 things.
Without gradle:
mvn clean install
npm run build
copy the js from build folder into the target folder. cp -R build/resources/main/META-INF/resources/ target/classes/META-INF/resources/
mvn install (don't clean!)
With gradle:
gradle build
Few remarks:
If you want to work with the npm stuff I suggest that you go for Liferay workspace, blade tools and Gradle combinations. It works smoother.
When you create the project with the archetype you might need to fix the ID for the component. In the JS code will contain something with the artefact name - root but the actual id in the JSP will probably be just namespace.

Related

Errors in eclipse pom.xml but maven clean install is successful

It seems that the property ${user.dir} is recognized by Maven but not recognized by Eclipse. I am seeing the errors below in the pom.xml file in eclipse everywhere then there is a reference to this section:
<outputDirectory>${user.dir}\Nightly_Build\lib</outputDirectory>
The errors are:
Cannot invoke "org.eclipse.core.runtime.IPath.segmentCount()" because "outputDir" is null (org.apache.maven.plugins:maven-jar-plugin:2.4:jar:bpcstudioToats:package)
java.lang.NullPointerException: Cannot invoke "org.eclipse.core.runtime.IPath.segmentCount()" because "outputDir" is null
The good thing is that the command mvn clean install is working fine. I run this command from eclipse right-click run/build and from the command line, and all is working fine.
This is causing eclipse not to recognize the maven dependencies correctly, and reporting compilation errors in various places, and the compilation in maven is successful.
Any idea how to resolve this issue?
Update:
I replaced all references to user.dir with project.basedir in all pom.xml, did a project clean, and updated maven, then all errors disappeared. But, I could see a new folder was created under each project base directory. I will check what was the intent of using user.dir and then will provide an update.

Maven dependencies are downloaded but eclipse won't resolve them

A multi-module maven project will be buit successfully from the command line using mvn clean install and is loaded successfully in vscode without any compilation errors.
When the same project is opened in Eclipse (version Version: 2022-09 (4.25.0), Build id: 20220908-1902), I see compilation errors for dependencies not resolved for example:
The import com.ibm cannot be resolved
I tried everything to resolve this error, nothing worked, for example:
Update maven project
Project / Clean
Remove maven feature, delete the project, reimport, and convert back to maven
The strange thing is that if I delete the repository folder from <user-home>\m2.\repository and make a simple change to any pom.xml file, the entire repository folder is downloaded. Also, I located the JAR file using VSCode (ctrl-click) and I can see the related JAR logEnglish-1.0.jar in the local .m2 repository folder <user-home>\.m2\repository\logEnglish\logEnglish\1.0\logEnglish-1.0.jar.
The problem is that only Eclipse is reporting compilation errors and a lot or maybe all of the maven dependencies are not resolved. This is also affecting the debugging option and it breaks due to such compilation errors.
Another thing I noticed is that the Maven Dependencies folder is not showing on the Project Explorer no in Package Explorer, but I can see Maven Dependencies entry in Project Properties -> Configure Build Path -> Libraries.
Please help resolve this issue so that I can clear the compilation errors in Eclipse.
Update 1:
I created a simple parent/child pom with one inner module. I was able to reproduce the problem right away.
See attached snapshots for details.
The compile errors will show only when you open the parent project. If you open the inner module directly as a separate project, no compile errors will show and I can run and debug the project. However, if I try to debug the parent project, I will get a warning due to compile errors, and I can run the project only and only after I added the jar of the inner module to the classpath of the debug configuration. If I don't add the jar file, I will get this error Error: Could not find or load main class training.FirstProjectClass. The project is being built successfully using mvn clean install and that's why I can run the project. If I run mvn clean then I cannot run the parent project.
Also, notice how the maven dependencies folder will show if you open the inner project directly, but, it won't show if you open the parent project.
In addition, I noticed if I add the inner project to the classpath of the debug config then it works also without building the project and without generating the jar file using mvn clean install.
Based on the above, the problem boils down to:
How we can resolve the dependencies of the inner modules when you open the project using the parent maven project?
If we can resolve the errors, then we can run without seeing the warning, and we have the assurance that the project is clear before running the mvn clean install command.

Gradle other project as dependency in eclipse

I have a web application which depends on another standalone project. Simply the web project requires a standalone project jar to be in classpath. I have built the standalone project jar with gradle and included that in web application's WEB-INF/lib folder. The project is running as expected. Now i want to make it automatic by adding that project as dependency. This is also achieved using the following code.
settings.gralde
include 'job-invoker'
project(':job-invoker').projectDir = new File(settingsDir, '../job-invoker')
build.gradle
dependencies {
compile project(':job-invoker')
.
.
}
I'm able to build the war file from command line using gradle and run it in tomcat. But i'm getting errors in eclipse. I'm not able to run the project in eclipse due to the compilation errors. Can some one please help me. Thanks in advance.
Finally i found a solution for this by installing the other project in maven local repository and adding this as a regular dependency in project. Reference code is given below.
Other project Gradle file
apply plugin: 'maven'
group = 'com.xxx.job'
version = '1.0'
Run gradle install command on this project. Then add mavenLocal() to your repositories in another project and add the dependency
compile 'com.xxx.job:job-invoker:1.0'

maven in command line succeed, but failed when using the same maven in eclipse

I'm trying to build the project of hadoop. I followed the official document as follows on how to do that.
http://wiki.apache.org/hadoop/HowToContribute
https://wiki.apache.org/hadoop/EclipseEnvironment
I've git clone the project, maven install it successfully, but when I import the project, or even a sub-project like 'hadoop-yarn-api', I got the following errors on maven:
Description Resource Path Location Type
Plugin execution not covered by lifecycle configuration: org.apache.hadoop:hadoop-maven-plugins:3.0.0-SNAPSHOT:protoc (execution: compile-protoc, phase: generate-sources) pom.xml /hadoop-yarn-api line 73 Maven Project Build Lifecycle Mapping Problem
Then I'm trying to mvn clean install the project via External Tools Configuration in eclipse, it also failed on:
[ERROR] Failed to execute goal org.apache.hadoop:hadoop-maven-plugins:3.0.0-SNAPSHOT:protoc (compile-protoc) on project hadoop-yarn-api: org.apache.maven.plugin.MojoExecutionException: 'protoc --version' did not return a version -> [Help 1]
But the curious part is that when I cd into the root directory of 'hadoop-yarn-api' and invoke mvn clean install, it can be built successfully.
I'm using m2ecipse in eclipse, and I'm sure that I've changed to the maven which is exactly the one that I'm used in command line, not the embedded one.
And I've installed protocol buffers 2.5.0:
$ protoc --version
libprotoc 2.5.0
Could anyone give me some idea? Many thanks!
P.S.
Eclipse Java EE IDE - Juno Service Release 2
m2e - 1.4.1.20140328-1905
Mac 1- 0.9.4
maven - 3.0.5
Hadoop - 2.2.0

Getting errors while generating WSDL via mvn command

The location to my project is C:\Users\ess\workspace\myproject1. I tried to generate the wsdl file via the mvn command but this error appeared
The goal you specified requires a project to execute but there no pom in this directory c:\users\ess
and Maven home is c:\program files\apache-maven-3.1.0
Any idea?
You need to change to the directory where your pom.xml sits:
cd C:\Users\ess\workspace\myproject1
Make sure your pom.xml is located inside myproject1
Now run the maven command.
If still the error comes, please share your complete maven output.
the location where you are trying to execute the command is not the root directory of the maven project. Check whether at this location C:\Users\ess you have pom.xml, i don't think you have.
Now go to this location C:\Users\ess\workspace\myproject1 and try to run the same command again.