- This topic has 13 replies, 5 voices, and was last updated 20 years, 3 months ago by Riyad Kalla.
-
AuthorPosts
-
emmanuelMemberHello all,
Below is all correspondence related to my request to deploy external jars. For completeness I include the lot.
Kind regards
Emmanuel—————————————
Emailed; Fri 2004/04/02 11:18 AM 😮
—————————————Hello MyEclipseIde support,
Attention: Scott and Riyad.
Request and communication to date;
—————————————–
I refer to my request and communication to extend MyEclipseIde to cater for deploying external jars that are used within a web project.A lot of discussion has happened back and forth between Scott, Riyad and myself. I feel I’m misunderstanding you or being misunderstood.
Comments on the following gave me the impression that external jars are being catered for.
– release 2.7GA; Project Deployment, Deployment of linked resources,
– https://www.genuitec.com/forums/topic/external-jars-closed/
– I’m asked to confirm whether 2.7GA now caters for my request; request subsequently closed.Further comments after my request for assistance, gave me another impression; that of deploying external jars are not available yet but being attended to in 2.8 as stated on roadmap;
– Enhanced J2EE Project Structures, Compilation and deployment of dependent Java projects,
Refer my request for assistance;
https://www.genuitec.com/forums/topic/external-jars/Some background on our development environment;
———————————————————–
Each “application project” we work on consists of itself and three “feeder projects” (we develop our “application projects” using the following pattern; “the system of interconnected systems”). Each “feeder project” has its own set of jars, which as a set could be at different versions for
different “application projects”; we manage this pattern and related artefacts very easily and effectively.Each “application project” team lead sets up the project environment and each team member follows that environment set-up. Whenever, any interconnected system “feeder project” releases a new version, this is communicated and the “feeder project” part of the environment is updated.
The team lead wishing to make use of such a release, updates his “application project” environment; this is communicated to team members and they update their “application project” environment. These “feeder project” updates are set in Eclipse Project->Properties->Java Build Path->Libraries->Add External Jars.At any given moment, above could be going on amongst approximately 50 developers making up three “feeder projects” and approximately 15 “application projects”. In an attempt to standardise we prefer to have processes and automate as much as possible. We currently deploy manually; or with Ant. Late last year I evaluated MyEclipseIde and recommended we use it; this recommendation was accepted and we are doing the necessary preparation to transition to MyEclipseIde. Amongst the reasons for the recommendation was its deployment capabilities. However, during my evaluation, I encountered one aspect of deployment, which is flawed, that of deploying external jars. Here is why I say it’s flawed. When deploying with Ant, we know the “application project” and dependant external jars of “feeder projects” are deployed 100%; there is thus never an issue related to assisting developers (with varied skills levels) when something does not work as designed. Using MyEclipseIde for deployment and having to remember to use Ant to deploy external jars of the “feeder projects” would most likely result in unexpected results if the deploying with Ant is erroneously not done. This oversight would take up valuable time of the developer, the team lead and possibly trainer/mentor. However, if the “application project” is deployed entirely (and kept up to date) as per the current MyEclipseIde deployment mechanism, and should that deployment mechanism include deploying the external jars of “feeder projects”, we could safely scrap other deployment mechanisms (manual, Ant, MyEclipseIde + Ant for external jars).
Above sketches our development environment. Please note, system testing, UAT and production environments get deployed completely differently and for that deployment we make use of other deployment tools.
Before you respond. At the risk of me not having clearly sketched our requirement, I’d like to first concentrate on whether you understand what I mean by deploying external jars. Once you and I have the same and clear understanding, then I’d like you to consider this request and provide feedback indicating whether MyEclipseIde already caters for this requirements of whether this feature is currently being developed for a future release, and if so, for which release is it planned?
Over to you.
Kind regards
Emmanuel———————————————–
Reply received; Fri 2004/04/02 04:45 PM 🙂
———————————————–Emmanuel,
Thanks for sending these requirements. Here is my understanding of your
description:Def. External Jar: A project build-path JAR archive that is referenced by
a workspace independent file path.I understand you have a requirement for MyEclipse to deploy External JARs referenced by a MyEclipse J2EE project. Is that correct?
The broader issue we seek to tackle involves deploying local jars, external
jars, and dependent projects. Specifically build-time dependencies may or may not be deployment dependencies. MyEclipse does not yet support
deployment of artifacts that are not local to a J2EE projects such as
external jars. So we are currently designing mechansims to support these
requirements. I am forwarding this thread to our dev team.Michael
—————————————–
My reply; Tue 2004/04/06 03:18 PM 🙂
—————————————–Hello Michael,
Thank you for your note and prompt reply.
> I understand you have a requirement for MyEclipse to deploy External JARs
> referenced by a MyEclipse J2EE project. Is that correct?
Correct, as you stated.> MyEclipse does not yet support deployment of artifacts that are not local to a J2EE projects such as
> external jars.
Thank you for the confirmation.> So we are currently designing mechansims to support these requirements.
Thank you; this’ll be a useful feature; please confirm whether this mechanism is what the roadmap for 2.8 refers to as ->Enhanced J2EE Project Structures->Compilation and deployment of dependent Java projects. If this is so, in our case, please note, ‘feeder projects’ will always provide external jars; they would compile their project and create jars.> I am forwarding this thread to our dev team.
Thank you.Michael, thank you again. In the meantime, we’ll deploy external jars using Ant.
I’ll be on the lookout for further information regarding this mechanism. I’m hoping our specific requirements regarding deploying external jars will be catered for.
Kind regards
Emmanuel——————————————-
My query; Wed 2004/05/26 02:21 PM 😮
——————————————-Hello MyEclipse support,
I attempted to deploy external jars using MyEclipseIde-2.8beta1, it does not deploy these jars.
Please advise whether 2.8beta1 caters for deploying pre-jarred external jars?
Kind regards
Emmanuel————————————————-
Reply received; Wed 2004/05/26 03:30 PM 😡
————————————————-Emmanuel,
This is a common question and the answer depends on what you’re doing and
where the jars are stored. Can you post your question to our support forums
with a specific example of your configuration? Then, we’ll be able to tell
if it’s a bug or configuration problem while creating a searchable public
record that can help others.Thanks,
–Scott
MyEclipse Support——————————————
My reply; Wed 2004/05/26 03:43 PM 😯
——————————————Hello Scott,
I have attempted to get this question answered in two ways without success, on two occasions on the forums for the exact purpose you state – for everyone’s benefit; where they were merely closed without resolve & like this with a direct email to support.
> This is a common question and the answer depends on what you’re doing and where the jars are stored.
I’ve been in lengthy correspondence before where I spelt out my requirement in painstaking detail. I just don’t seem to convey my requirement in a way that anybody understands me. I’m beginning to think I’m talking some strange language.I’ve eagerly awaited 2.7 & 2.8 for this requirement.
Please advise why it would help if I post my question again.
Kind regards
Emmanuel————————————————–
Reply received; Wed 2004/05/26 04:26 PM 🙂
————————————————–Emmanuel,
It would help to repost the question because support for dependent java
projects used by web projects was added to 2.8 Beta 1. It may or may not
have addressed your deployment concern, or the implementation may have
attempted to address it and simply contain a bug. Since we’re actively
working on this feature right now, posting a specific question in the use of
2.8 Beta 1 in this area would help us determine which case this is.–Scott
——————————————-
My reply; Wed 2004/05/26 04:56 PM 😀
——————————————-Hello Scott,
Thank you for your note and prompt reply.
Will post all I have on this topic in one post.
Kind regards
Emmanuel————————————-
End of correspondence – to date
————————————-
Scott AndersonParticipantEmmanuel,
Thank you for taking the time to detail the issue. From the sounds of it, your ‘feeder’ projects are basically utilities or frameworks that you maintain that you’d like deployed with your web (application) projects. Right now, as I understand it, you have scripts that build jars from the feeder projects and then you reference these jars from the web project classpath as external jars. What you’d like is for MyEclipse to deploy these external jars by placing them in your WEB-INF/lib directory during exploded deployment or archive packaging. Is that correct?
For 2.8 Beta 1 we added the ability to deploy Java projects that are used as libraries by web projects automatically. If the above is correct, to enable this in your environment you could modify your web project classpath to remove the external jars and simply make the web project dependent on the feeder projects directly. Once this is done, MyEclipse will package the feeder projects automatically during deployment, thus eliminating the need to both create the feeder project jar files or deploy them manually. Does this make sense? Will it work in your enviornment? If not, what are the issues.
emmanuelMemberHello Scott,
Thank you for taking the time to detail the issue.
You are most welcome.
Right now, as I understand it, you have scripts that build jars from the feeder projects and then you reference these jars from the web project classpath as external jars.
Correct.
What you’d like is for MyEclipse to deploy these external jars by placing them in your WEB-INF/lib directory during exploded deployment or archive packaging. Is that correct?
Correct. Let me see if I understand you, example, WEB-INF/lib directory of tomcat not WEB-INF/lib directory of project in Eclipse.
simply make the web project dependent on the feeder projects directly. Once this is done, MyEclipse will package the feeder projects automatically during deployment, thus eliminating the need to both create the feeder project jar files or deploy them manually.
Scott, if I understand your suggestion, this could never work. Let me elaborate.
‘Feeder’ projects have alpha/beta/maintenance/release maturity cycles which are exposed via a project jar; we also use 3rd party jars. In web application projects, we configure java classpath (via Eclipse) to link to appropriate jars in relevant repository.
For your suggestion to work for us, we’d need to have ‘feeder’ project particular ‘source’ version exposed to each web application project team member; also the ‘source’ of 3rd party.
Does this make sense? Will it work in your enviornment? If not, what are the issues.
With my understanding of your suggestion it won’t work for us.
Please advise.
Kind regards
Emmanuel
Riyad KallaMemberCorrect. Let me see if I understand you, example, WEB-INF/lib directory of tomcat not WEB-INF/lib directory of project in Eclipse.
He meant the <Project Name>/WebRoot/WEB-INF/lib directory under your Web Module Project in MyEclipse. Files that are in this directory (as you know) will be deployed along with your project.
‘Feeder’ projects have alpha/beta/maintenance/release maturity cycles which are exposed via a project jar; we also use 3rd party jars. In web application projects, we configure java classpath (via Eclipse) to link to appropriate jars in relevant repository.
I feel I understand your requirement, and actually think its quite complex. For example, my usage of ‘External JARs’ currently is to refer to the servlet-api.jar and jsp-api.jar files from my Tomcat install. This is so I can compile my Servlet classes. In my case, I don’t want my External JARs deployed anywhere, because they are already part of the app server install.
I’m still not clear, in your situation, where you had hoped the External JARs will be deployed to. Do you want them deployed into your web app? Did you want them deployed to the App Server’s common/lib dir?
emmanuelMemberHe meant the <Project Name>/WebRoot/WEB-INF/lib directory under your Web Module Project in MyEclipse. Files that are in this directory (as you know) will be deployed along with your project.
Riyad, if this is what Scott meant, then we’re a step closer and possibly why my request is misunderstood, thank you; but I doubt this is what he meant. 🙂
I’m still not clear, in your situation, where you had hoped the External JARs will be deployed to. Do you want them deployed into your web app? Did you want them deployed to the App Server’s common/lib dir?
I’m desperate for them to be deployed (from where they reside and as referenced in web project classpath as external jars) to, example, <tomcat…><webRoot>/WEB-INF/lib directory. I do not mind how this is implemented, but would suggest, directly from their origin, to the App Server’s <webRoot>/WEB-INF/lib directory. 💡
Scott AndersonParticipantCorrect. Let me see if I understand you, example, WEB-INF/lib directory of tomcat not WEB-INF/lib directory of project in Eclipse.
Riyad, if this is what Scott meant, then we’re a step closer and possibly why my request is misunderstood, thank you; but I doubt this is what he meant.
Actually, I meant copying the library to the deployment location, not replicating it within the workspace. So, what Riyad stated really wasn’t what I meant, as Emmanuel figured.
I’m desperate for them to be deployed (from where they reside and as referenced in web project classpath as external jars) to, example, <tomcat…><webRoot>/WEB-INF/lib directory. I do not mind how this is implemented, but would suggest, directly from their origin, to the App Server’s <webRoot>/WEB-INF/lib directory.
Actually, picking them up and deploying them would be an enhancement to what’s there now, but not an overwhelming one as long as all the external jars are deployed. The problem is, as Riyad stated, the configurability of this option if we need to support “some get deployed and some don’t”.
Initiallyt, we could provide an option to deploy all external jars or deploy none of them, just like we do for dependent projects. This would provide symmetry with the other feature, would meet your need, and allow Riyad to place libs he wants deployed directly into his WEB-INF/lib directory while turning off external jar deployment.
Ignoring external jars really shouldn’t be an issue for most users since our web projects typically compile against our classpath container which has all the J2EE jars in it, and thus will never be deployed. However, in Riyad’s custom configuration, where he’s obviously not doing this, he could still turn off the new feature if needed.
Riyad KallaMemberGuys,
Sorry for the confusion. I’m glad to see you two are on the same page, because I think I’m reading a different book completely 😀
emmanuelMemberSo, what Riyad stated really wasn’t what I meant, as Emmanuel figured.
Thank you for clarifying your meaning.
The problem is, as Riyad stated, the configurability of this option if we need to support “some get deployed and some don’t”.
It would be 100% acceptable to deploy all or nothing. Keeping in mind that different ‘kind’ of entries reside in .classpath file and my request revolves around kind=”lib”.
Ignoring external jars really shouldn’t be an issue for most users since our web projects typically compile against our classpath container which has all the J2EE jars in it, and thus will never be deployed.
In line with what you state, I cannot see where both a) external jars and b) <project>WEB-INF/lib directory jars would need to be deployed together; however, if the constraint is not introduced, the feature is just that much more flexible/powerful. Thus, why not deploy both <project>WEB-INF/lib jars as well as external jars, based on (different) preferences.
Scott, as you describe it here, it seems we’ve managed to pinpoint this requirement exactly; thank you for your patience and endeavours.
Riyad, thank you for your participation.
I’ll stay on the lookout for further communication/implementation in this regard. 😀
Kind regards
Emmanuel
Scott AndersonParticipantAll,
Looks like we’ve got this one nailed down. I’ve been told that the external jars deployment options will be available in 2.8 Beta 2. Thanks for all the help in clearly articulating the feature enhancement and the use case behind it.
Riyad KallaMemberFixed in 3.8Beta2. How ‘external Jars’ can optioanlly be deployed with the project and copied into teh WEB-INF/lib dir.
Armen YampolskyMemberHi, I am having a tough time understanding how to get the most basic dependencies deployed by MyEclipse 3.8 beta 2. Please help me in understanding how to properly use your tool. Please allow me to describe the setup:
(1) I have one source and one web directory, and I have one jar that all sources and jsp’s depend on. The dirs are named src, web, and lib respectively.
(2) This is a two tier app. The servlet container runs on tomcat 5, the ejb container is weblogic 8.
(3) The jsp’s in the web dir depend on the sources and the jar.From what I understand, I need to create 3 projects — one plain jane java project, one ejb project and one web project. The plain one depends on the single jar and has it set to export to dependent projects. The ejb project depends on the plain one, and the web project depends on the plain one. Neither have sources, as all the sources are in the plain one, and there are no ‘other’ sources to speak of. What I have discovered so far:
(1) Deployment of EJB project does not deploy anything! Nothing.
(2) Deployment of web project deploys the compiled sources from the plain one, and deploys the jsp’s, but does not deploy the jar that the plain one depends on.Obviously I am doing something wrong. Can you please explain what it is?
Thank you,
-Armen
Riyad KallaMemberArmen,
Here are some tips that might help:
1) Deploying dependent projects and dependent external JARs is only applicable to Web Module Projects or EJB Module Projects. So by setting an external JAR on a Java Project doesn’t help it get deployed.
2) What you can do is set the JAR as a external JAR on your EJB and/or WEB Project, so when you deploy either of those, the JAR will get deployed with them.
3) I’m not sure why the EJB isn’t working, can you describe its setup right now in detail, along with any project reference syou have and its layout?
emmanuel-tertiaMemberHello everyone who assisted me with this request (original thread).
Thank you. It works as requested.
This feature will add significantly to our productivity.
Especially thank you for your willingness to hear me out and to understand my request and then to develop it. 😀
Kind regards
Emmanuel
Riyad KallaMemberThank you. It works as requested.
This feature will add significantly to our productivity.
That is fantastic news, that has always been our goal for ME and is a true testament to the user-feedback loop’s effectiveness.
Especially thank you for your willingness to hear me out and to understand my request and then to develop it.
We should thank you. This is not only a very popular feature, but you were very patient explaining this to us more than one time, until we understood it 😀
-
AuthorPosts